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(); 

Я думаю, что у меня есть исправление для непоследовательного поведения onPrepareDialog. При первоначальном создании диалога (когда он все еще является AlertDialog.Builder), вы должны установить сообщение в исходное состояние (но не null), или onPrepareDialog НЕ будет перезаписывать сообщение с предполагаемым значением. Поэтому, когда вы создаете диалог, сделайте что-то подобное, чтобы всегда иметь ненулевое значение в сообщении. Я боролся с этим в течение нескольких дней и нашел это решение случайно:

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

OnPrepareDialog метод вызывается, когда отображается диалог. Таким образом, лучше изменить текст или другие функции, переопределив этот метод.