gpt4 book ai didi

java - Activity 和 AlertDialog 被启动两次

转载 作者:行者123 更新时间:2023-11-30 03:40:37 26 4
gpt4 key购买 nike

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

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

为了解决我的Activitie问题,我在 list 文件中设置了:android:launchMode="singleInstance" 成功了。

但是,这不能用于 AlertDialog,因为它们在 list 文件中没有任何引用来将其设置为 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 中,它在 list 文件中设置 launchMode="singleInstance" 后工作正常。但是,在启动 AlertDialogcase R.id.action_one 中,它仍然打开两次。

@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);
}

最佳答案

改变这一行:

return super.onCreateOptionsMenu(menu);

到:

return true;

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

(PS:我其实已经想通了,正要发帖,但不得不接个电话。不是开玩笑)

关于java - Activity 和 AlertDialog 被启动两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com