在Honeycomb上没有显示Android对话框

时间:2012-01-17 13:57:58

标签: android android-3.0-honeycomb android-alertdialog

我正在我的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();

    }

0 个答案:

没有答案