1

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

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

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

但是,这不能为AlertDialogs 完成,因为它们在清单文件中没有任何引用来设置它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哪个发射AlertDialog它仍然开放两次。

@Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        // TODO Auto-generated method stub
        com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.action_options, menu);
        return super.onCreateOptionsMenu(menu);
    }
4

1 回答 1

1

更改此行:

return super.onCreateOptionsMenu(menu);

到:

return true;

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

(PS:其实我想通了,本来打算贴出来的,但不得不接电话。不是开玩笑)

于 2013-04-04T01:40:39.107 回答