Я создаю AlertDialog в своей деятельности (который устанавливается в режиме Portraid в файле манифеста и в onCreate()
). Когда я тестирую свое приложение на устройстве, проблем нет, но когда я тестирую на Android Emulator 3.0, и я нахожусь в альбомном режиме, в начале он загружает мое приложение в течение нескольких миллисекунд в ландшафтном режиме (я вижу, что в сообщениях LogCat, которые я добавил в свою активность), введите метод onResume()
моей активности и отобразите его в портретном режиме. Но во время всего этого в LogCat я вижу ошибку:
Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@408512e0 that was originally added here
Я знаю, почему я получаю это, но я не знаю, как именно я могу это исправить.
Вот как выглядит мой Alert Dialog:
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();
}