Hoy me enfrenté a un problema muy extraño. En mi juego, creo AlertDialog para mostrar al usuario los desafíos del siguiente nivel cuando uno tiene éxito. Entonces, el código correspondiente es así. cuando el juego es exitoso se llama a showDialog (R.id.display_success) y se ejecuta el siguiente código.Android: No se puede cambiar el texto aparece en AlertDialog
Por lo tanto, estoy esperando ejecutar este código en cada llamada. Sin embargo; el juego se ejecuta solo una vez y muestra el mismo AlertDialog en todas las demás ejecuciones. Quiero decir, como la instancia no se crea después de que se crea la primera y la primera instancia se usa 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 estás equivocado. Por diseño, cada Diálogo solo se crea una vez. Si desea cambiar el contenido de su diálogo, use onPrepareDialog, que recibe una llamada cada vez que su cuadro de diálogo está a punto de aparecer. El código proporcionado podría funcionar, pero no es la forma preferida de hacerlo. –
Puse el 'removeDialog' en una declaración try catch. El código funciona, pero dudo mucho que sea la forma correcta de hacerlo –
@Tim, sí, estoy equivocado. Aprendí mucho más tarde que se llama a OnPrepareDialog cada vez que se crea el diálogo. –