Android:无法更改AlertDialog中显示的文本
题
我创建了一个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();
解决方案 2
显示对话框时,将调用
onPrepareDialog方法。因此,最好通过重写此方法来更改文本或其他功能。
其他提示
我认为我已经修复了onPrepareDialog的不一致行为。最初创建对话框时(当它仍然是AlertDialog.Builder时),您必须将消息设置为初始状态(非空)或onPrepareDialog不会覆盖具有预期值的消息。因此,当您创建对话框时,请执行以下操作以使消息中始终具有非空值。我挣扎了几天,偶然发现了这个解决方案:
AlertDialog.Builder resultAlert = new AlertDialog.Builder(context);
if ( message == null ) {
resultAlert.setMessage("");
} else {
resultAlert.setMessage(message);
}
不隶属于 StackOverflow