Android: No se puede cambiar el texto aparece en AlertDialog

Hoy me he enfrentado a un problema muy extraño. En mi juego creo AlertDialog para mostrar al usuario los desafíos de nivel siguiente cuando uno tiene éxito. Por lo tanto, el código correspondiente es así. Cuando se ejecuta el juego showDialog (R.id.display_success) se llama y se ejecuta el código siguiente.

Por lo tanto, espero ejecutar este código en cada llamada. Sin embargo; El juego se ejecuta sólo una vez y muestra el mismo AlertDialog en cada otra ejecución. Quiero decir, como la instancia no se crea después de la primera se crea y la primera instancia se utiliza todo el tiempo. Espero haber podido describir mi problema.

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

Creo que tengo una corrección para el comportamiento inconsistente de onPrepareDialog. Al crear inicialmente el diálogo (cuando todavía es un AlertDialog.Builder), usted tiene que fijar el mensaje a un estado inicial (no nulo) o onPrepareDialog NO sobreescribirá el mensaje con el valor deseado. Por lo tanto, cuando está creando el diálogo, haga algo como esto para tener siempre un valor no nulo en el mensaje. Luché con esto durante días y encontré esta solución por accidente:

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

El método onPrepareDialog se llama cuando se muestra el diálogo. Por lo tanto, es mejor cambiar el texto u otras características por sobreescribir este método.

  • Acceso a TextView desde otra clase
  • No se puede establecer la sombra de TextView mediante programación
  • Selección de texto en TextView e invocación de menú flotante en un clic largo
  • Mostrar el número total como texto para múltiples pines con un pin en la misma ubicación en el mapa en android
  • Animación de texto de pantalla de personaje de Android por caracteres
  • Cómo eliminar el margen superior de TextView?
  • Android: cómo crear un botón con imagen y texto que están centrados
  • ¿Hay alguna manera de desactivar la función de zoom en los campos de entrada en la vista web?
  • ¿Cómo crear un efecto de marquesina para un texto de menor longitud que no exceda el tamaño de la pantalla en Android?
  • Android EditText texto y diseño de sugerencias
  • TextView sombra destruida mientras captura la imagen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.