Activity和AlertDialog正在两次启动

时间:2013-04-04 00:31:44

标签: java android

我有AlertDialog显示两次,我不知道为什么!该问题不仅适用于AlertDialogs;但是,它也适用于"Activities"

请注意,我正面临Android 4.0.3的问题。但是,当我在Android 2.3.6上运行该应用程序时,一切正常。

为了解决Activitie的问题,我在清单文件中设置了: android:launchMode="singleInstance"它有效。

但是,AlertDialog无法做到这一点,因为它们在清单文件中没有任何引用来将其设置为singleInstance或类似的东西。

有人告诉我在BreakPoint之后设置show()以检查我的代码。但我不知道如何放BreakPoint以及如何检查。

编辑:

我正在使用HoloEverywhere和SherlockActionBar。我不知道他们有多大的影响力。

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
    switch(item.getItemId())
    {
    case R.id.action_one:
        alertDialog();
        break;
    case R.id.action_two:
        Intent i = new Intent(this,Info.class);
        startActivity(i);
        overridePendingTransition(0, 0);    
        break;

    }
    return super.onOptionsItemSelected(item);
}

private void alertDialog(){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("My title");
        AlertDialog alert= builder.create();
        alert.show();

}

case R.id.action_two中,在清单文件中设置launchMode="singleInstance"后,它正常工作。但是,在启动case R.id.action_one的{​​{1}}中,它仍然会打开两次。

AlertDialog

1 个答案:

答案 0 :(得分:1)

更改此行:

return super.onCreateOptionsMenu(menu);

为:

return true;

当您致电super.onCreateOptionsMenu时,它会为菜单中的每个项目添加额外的onMenuItemClickListener个侦听器,这样会导致2次点击。

(PS:我实际上想出了这个并准备发布,但不得不接听电话。不开玩笑)