我有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
答案 0 :(得分:1)
更改此行:
return super.onCreateOptionsMenu(menu);
为:
return true;
当您致电super.onCreateOptionsMenu
时,它会为菜单中的每个项目添加额外的onMenuItemClickListener
个侦听器,这样会导致2次点击。
(PS:我实际上想出了这个并准备发布,但不得不接听电话。不开玩笑)