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.
- Establecer dinámicamente vínculos a texto en strings.xml
- Margen en TextView personalizado
- Cómo reemplazar elipses con fade / fading edge en textview en Android sdk?
- Tamaño de texto con diferentes resoluciones
- ¿Hay una manera de crear el stackoverfow "Etiquetas" EditText / Campo de entrada en Android?
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();
- Cómo cambiar el icono de un botón mediante programación?
- Diferentes tamaños en 2 dispositivos, incluso si utilizo "dp"
- GetDimension () / getDimensionPixelSize () - problema mutliplier
- TextView en la Galería
- Hacer texto flotante-derecha en Android
- Cómo crear alineado verticalmente superíndice y subíndice en TextView
- Cómo establecer la sombra alrededor de TextView
- ¿Hay una manera de agregar la sombra interna a un TextView en Android?
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.