Stavo sistemando un paio di dialog nella mia applicazione, quando mi sono accorto di un bug che non avevo ancora notato!
Vi posto un po' di codice della mia activity:
1
2
3
4protected Dialog onCreateDialog(int id) {
5switch(id) {
6case StatusActivity.DIALOG_CHANGE_NAME:
7return getDialogChangeName();
8}
9return null;
10}
11
12private AlertDialog getDialogChangeName() {
13// il valore restituito qua dipende da altre cose settate nell'activity...
14String valore = getValore();
15
16// inflate layout del dialog
17LayoutInflater inflater = this.getLayoutInflater();
18View dLayout = inflater.inflate(R.layout.change_name_dialog, null);
19
20EditText editTxt = (EditText)dLayout.findViewById(R.id.dialog_change_name_edit);
21editTxt.setText(valore);
22
23// costruzione dialog
24AlertDialog.Builder builder = new AlertDialog.Builder(this);
25// ... OMETTO UN PO' DI ROBA ...
26return builder.create();
27}
28
29public void onClick(View v) {
30switch(v.getId()) {
31case R.id.btn_change:
32showDialog(StatusActivity.DIALOG_CHANGE_NAME);
33break;
34}
35}
36
Normalmente nella mia activity faccio l'override del metodo onCreateDialog, da lì chiamo un altro metodo che mi fa l'inflate del layout del dialog da un file xml che contiene un EditText che devo inizializzare con un certo valore.
Quando devo visualizzare la dialog chiamo il metodo dell'activity showDialog() con il codice del dialog da visualizzare (è una costante definita nella mia activity...).
Solo che quando visualizzo la prima volta la dialog, correttamente viene letto il valore corrente e settato dentro l'EditText, quando devo visualizzare la dialog una seconda volta con un altro valore, pare che la showDialog() ricicli la dialog costruita prima e quindi non passa dalla onCreateDialog() e pertanto resta settato il vecchio valore!
Dove/come posso settare correttamente il valore dentro la dialog quando faccio la showDialog()?