【问题标题】:Android: Can not change the text appears in AlertDialogAndroid:无法更改出现在 AlertDialog 中的文本
【发布时间】:2010-10-24 11:08:37
【问题描述】:

我创建了一个 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();

【问题讨论】:

    标签: android text dialog


    【解决方案1】:

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

    AlertDialog.Builder resultAlert = new AlertDialog.Builder(context);
    
    if ( message == null ) {
        resultAlert.setMessage("");
    } else {
        resultAlert.setMessage(message);
    }
    

    【讨论】:

    • 太棒了,这行得通!虽然由于某种原因,它不适用于对话框的标题...
    【解决方案2】:

    在显示对话框时调用onPrepareDialog 方法。因此,最好通过覆盖此方法来更改文本或其他功能。

    【讨论】:

    • 我认为你错了。按照设计,每个 Dialog 只创建一次。如果您想更改对话框的内容,请使用 onPrepareDialog,每次您的对话框即将显示时都会调用它。提供的代码可能有效,但不是首选方式。
    • 我将“removeDialog”放在了 try catch 语句中。该代码有效,但我非常怀疑这是正确的方法
    • @Tim,是的,我错了。很久以后我才知道,每次创建对话框时都会调用 onPrepareDialog。
    • 谢谢@Tim。你真好。事实上,如果你把它写下来,我很乐意接受你的回答。 :) 再次感谢。
    • 回答你自己的问题完全没问题,我们应该就这样吧。干杯:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多