Сегодня я столкнулся с очень странной проблемой. В моей игре я создаю AlertDialog, чтобы показать пользователям проблемы следующего уровня, когда это удается. Таким образом, соответствующий код выглядит следующим образом. когда игра выполнена успешно, showDialog (R.id.display_success) вызывается и выполняется следующий код.Android: не удается изменить текст в AlertDialog
Итак, я ожидаю выполнить этот код в каждом вызове. Однако; игра выполняется только один раз и показывает один и тот же 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, который вызывается каждый раз, когда ваш диалог вот-вот появится. Предоставленный код может работать, но это не лучший способ сделать это. –
Я положил 'removeDialog' в инструкцию try catch. Код работает, но я очень сомневаюсь, что это правильный способ сделать это. –
@ Тит, да, я ошибаюсь. Я узнал это намного позже, что onPrepareDialog вызывается каждый раз, когда диалог создается. –