Android:无法更改 AlertDialog 中出现的文本

标签 android text dialog

我创建了一个 AlertDialog,以便在成功时向用户显示下一级别的挑战。所以,对应的代码是这样的。当游戏成功时调用 showDialog(R.id.display_success) 并执行以下代码。

因此,我希望在每次调用时都执行此代码。然而;游戏只执行一次,并且在所有其他执行中显示相同的 AlertDialog。我的意思是,就像在创建第一个实例之后不创建实例并且一直使用第一个实例一样。

case R.id.display_success:           
       updateGameSettings();
       message = formatLevel()
       + formatMission();
       return new AlertDialog.Builder(this)
       .setIcon(R.drawable.smiley_happy)
       .setTitle(R.string.dialog_success)
       .setMessage(message)
       .setPositiveButton(R.string.alert_dialog_newgame, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog,     int whichButton) {
                       startANewGame();
               }
       })
       .setNegativeButton(R.string.exit, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int whichButton) {
                     finish();
               }
       })
       .create();

最佳答案

我想我已经修复了 onPrepareDialog 的不一致行为。最初创建对话框时(当它仍然是 AlertDialog.Builder 时),您必须将消息设置为初始状态(非空),否则 onPrepareDialog 不会用预期值覆盖消息。因此,当您创建对话框时,执行类似这样的操作以在消息中始终具有非空值。我为此苦苦挣扎了好几天,偶然发现了这个解决方案:

AlertDialog.Builder resultAlert = new AlertDialog.Builder(context);

if ( message == null ) {
    resultAlert.setMessage("");
} else {
    resultAlert.setMessage(message);
}

关于Android:无法更改 AlertDialog 中出现的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834139/

相关文章:

android - PhoneGap Android + jQuery 移动应用程序不会向下滚动

android - 如何阻止我的应用程序出现在平板电脑上的 Android 电子市场中?

mysql - 加载大量学生表,但学校仅在第一行标识

android - 我正在尝试在 Android 中对自定义对话框进行单元测试,但我似乎无法实例化它

visual-studio - 如何告诉 Visual Studio 2010 记住“查找”对话框的位置?

dialog - 如何确定 JFace 或 SWT 对话框当前处于打开状态?

android - 尽管数据没有改变,但一些 fragment 观察者在从返回堆栈弹出后触发

android nkd 不包含搜索 limits.h 的路径 #include_next <limits.h>

c# - 如何从在线 .txt 文件中搜索或匹配文本?

c# - 我如何在 c# 或 vb.net 中向图像添加文本