gpt4 book ai didi

java - 单击 onOptionsItemSelected 中的 AlertDialog 中的按钮会使模拟器崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:52 25 4
gpt4 key购买 nike

我的主要问题是:无论如何我都可以从 onOptionsItemSelected() 内部触发 AlertDialog 而不会在我按下对话框上的按钮时使我的模拟器崩溃?

为此,我在整个互联网上进行了搜索,但我发现每个人都在说同样的话,但即使我复制并粘贴他们的代码,我也会遇到同样的错误。所以我会尽量解释我的情况。

这是一个非常简单的 AlertDialog 示例:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this)
.setTitle("Your Title")
.setMessage("Click yes to exit!")
.setCancelable(false)
.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();

现在可以了。只要我在 onOptionsItemSelected() 函数之外运行它。例如,如果我将这段代码添加到常规按钮的 onClickListener 中。然后,当我单击该按钮时,将出现警告对话框,一切正常。但是,当我将这段代码包含在我的 onOptionsItemSelected() 中时。然后会出现警告对话框,但按下对话框上的按钮会使我的整个模拟器崩溃。这是我的 onOptionsItemSelected():

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()){

case R.id.action_trash:

Log.i("trash", "button clicked");


AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this)
.setTitle("Your Title")
.setMessage("Click yes to exit!")
.setCancelable(false)
.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();

return true;
case R.id.action_help:

Log.i("help", "button clicked");

return true;
default:
return super.onOptionsItemSelected(item);
}
}

现在,当我单击工具栏中与 action_trash id 链接的项目时。我收到一个警告对话框,但是当我单击“确定”按钮时,我的整个 Android 模拟器就崩溃了。我仍然能看到的唯一警告是:

Hax is enabled
Hax ram_size 0x40000000
HAX is working and emulator runs in fast virt mode.
emulator: Listening for console connections on port: 5554
emulator: Serial number of this emulator (for ADB): emulator-5554
EmuGL:WARNING: bad generic pointer 0x7fc16d378600

我很确定这是一条不相关的消息。有时我看到有人要求 LogCat,但由于整个模拟器都崩溃了,所以我什么也找不到。

还有一个附带问题:为什么这根本不起作用?是不是因为在 setNeutralButton() 中创建的 onClickListener() 不知何故被破坏了?我是 android 的新手,所以如果这是一个可以在未来避免的大的 nooby 错误,任何建议将不胜感激。

附言我也尝试过将“.Builder(this)”替换为“.Builder(MainActivity.this)”以及我目前遇到的所有变体,但没有一个能解决问题。

提前致谢:)

最佳答案

我遇到过同样的事情。有两件事对我有用。

  1. 将 AVD 设置更改为“软件 - GLES 2.0”,而不是硬件或“模拟性能”选项的自动。
  2. 在 AVD 的开发者选项中打开“显示布局边界”。

其中一个应该可以解决问题,您不需要同时执行这两个操作。

关于java - 单击 onOptionsItemSelected 中的 AlertDialog 中的按钮会使模拟器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842133/

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