Диалог Android не отображается на Honeycomb - PullRequest
0 голосов
/ 17 января 2012

Я создаю 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();

    }
...