我正在我的Activity中创建一个AlertDialog(在清单文件和onCreate()
中的Portraid模式下设置)。当我在设备上测试我的应用程序时没有问题,但是当我在Android Emulator 3.0上测试并且我处于横向模式时,开始它在横向模式下加载我的应用程序几毫秒(我可以看到在我已添加到我的活动中的LogCat消息中,输入我的活动的onResume()
方法并在纵向模式下显示它。但在此期间,我可以在LogCat中看到一个错误:
Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@408512e0 that was originally added here
我知道为什么会收到这个,但我不知道我究竟能解决这个问题。 以下是我的警报对话框的样子:
public AlertDialog createDialog(){
final CharSequence[] items = {getString(R.string.phone_memory)+" - "+memorysize+" "+getString(R.string.free_space)+" ", getString(R.string.sd_card)+" - "+megAvailable+" MB "+getString(R.string.free_space)};
final int userId = RPCCommunicator.getUserId(this);
final String servername = RPCCommunicator.getCurrentServerName(this);
int selected = 0;
SharedPreferences stampiiSettings = PreferenceManager.getDefaultSharedPreferences(MyCollectionList.this);
final SharedPreferences.Editor editor = stampiiSettings.edit();
if(memory>megAvailable){
selected = 0;
editor.putInt("storagePath", 1);
} else if(megAvailable>memory){
selected = 1;
editor.putInt("storagePath", 2);
}
editor.putBoolean("insertCountries", false);
editor.commit();
AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent());
builder.setTitle(getString(R.string.select_storage_path));
builder.setSingleChoiceItems(items, selected, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0:
RPCCommunicator.createFoldersInInternalStorage(servername, userId, MyCollectionList.this);
Toast.makeText(getApplicationContext(), getString(R.string.select_storage_path_phone_memory), Toast.LENGTH_SHORT).show();
editor.putInt("storagePath", 1);
editor.putBoolean("insertCountries", false);
editor.commit();
break;
case 1 :
RPCCommunicator.createFoldersInExternalStorage(servername, userId, MyCollectionList.this);
Toast.makeText(getApplicationContext(), getString(R.string.select_storage_path_sd_card), Toast.LENGTH_SHORT).show();
editor.putInt("storagePath", 2);
editor.putBoolean("insertCountries", false);
editor.commit();
break;
}
}});
builder.setNegativeButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (RPCCommunicator.chkNetworkStatus()) {
getCollectionsInfo(MyCollectionList.this);
SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor1 = isLogged.edit();
editor1.putBoolean("getInfoFromJsonForColl", false);
editor1.commit();
}
}
});
AlertDialog alert = builder.create();
return alert;
}
我是如何展示的:
if(storageID==0){
alert = createDialog();
alert.show();
}