Voglio mostrare un AlertDialog con un'opzione che potrebbe cambiare ad ogni richiesta. Quindi ad esempio una volta voglio mostrare l'opzione "aggiungi ai contatti" mentre un'altra volta dovrebbe essere "rimuovi dai contatti".Android AlertDialog con testo che cambia dinamicamente ad ogni richiesta
Il mio codice funziona per la prima volta, tuttavia Android sembra memorizzare nella cache AlertDialog in modo che onCreateDialog non venga eseguito la volta successiva. Pertanto l'opzione non cambia più. Posso evitare questa memorizzazione nella cache o esiste solo un altro modo di modificare l'opzione?
Sto lavorando con SDK 1.5 ma utilizzando 1.1.
@Override
protected Dialog onCreateDialog(final int id) {
...
String add_remove_contact = res.getString(R.string.profile_add_to_contacts);
if (user.getContacts().contains(profileID)) {
add_remove_contact = res.getString(R.string.profile_remove_from_contacts);
// TODO: this string is not changed when contact status changes
}
final CharSequence[] items = {res.getString(R.string.view_profile),
res.getString(R.string.profile_send_message),
add_remove_contact};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
return builder.create();
}
La finestra di dialogo deve essere creata solo una volta, per motivi di prestazioni (è un'operazione relativamente costosa). Invece di ricrearlo ogni volta che viene visualizzato, è possibile utilizzare il metodo onPrepareDialog per apportare modifiche alla finestra di dialogo così come viene visualizzata, come spiegato nella risposta successiva. – ChrisV
Per quelli che ancora arrivano qui, 'removeDialog' e' showDialog' sono ora deprecati. Mentre Android si sposta su 'Fragments', l'uso di' DialogFragment' è ora raccomandato. Per ulteriori informazioni, ecco un link alla documentazione ufficiale: http://developer.android.com/reference/android/app/DialogFragment.html –
"removeDialog" è deprecato, solo dicendo ... –