Ciao Sto sviluppando un'applicazione che utilizza le mappe.Il frammento della finestra di dialogo respinto riappare di nuovo quando viene ripristinata l'app
Sto utilizzando Fragment Activity e un frammento denominato Fragment-A.
In Fragment-A c'è un pulsante, facendo clic su quel pulsante si apre un frammento della finestra di dialogo, viene visualizzata una mappa con una posizione ricevuta in precedenza dal server.
Diciamo che questo frammento di finestra di dialogo è DialogFragment-B.
Ha un pulsante per chiudere, un pulsante per navigare verso l'app google maps per ottenere indicazioni stradali.
Se l'utente passa a DialogFragment-B e torna al frammento-A, facendo clic sul pulsante di chiusura, ogni cosa funziona correttamente.
Ma se l'utente fa clic sul pulsante Indietro, il frammento di finestra di dialogo esistente verrà chiuso normalmente e l'app funzionerà normalmente.
Ma se l'utente poi preme il pulsante di casa o ha ricevuto una telefonata e onResume è chiamata anche se il DialogFragment-B è respinto in precedenza, riappare e stringendosi si blocca l'applicazione con un'eccezione di puntatore nullo
Ecco il mio codice per aprire DialogFragment-B.
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
android.app.Fragment prev = fm.findFragmentByTag(MY_MAP);
if (prev != null) {
ft.remove(prev);
}
MyMapFragmentDialog newFragment = MyMapFragmentDialog
.newInstance(eachPost);
newFragment.show(ft, MY_MAP);
In DialogFragment-B sul clic pulsante di chiusura, che io chiamo MyMapFragmentDialog.this.dismiss();
Per favore, se qualcuno ha riscontrato questo problema e ha superato, guidami attraverso.
Penso che stai trascurando la transazione: 'ft.remove (prev). Com()' o aggiungi un'altra riga come 'ft.commit();' –
Prova il 'MyMapFragmentDialog' all'interno del ciclo if. Il 'prev' diventa nullo e tu aggiungendo il frammento ad esso – GoCrazy