Witam Pracuję nad aplikacją korzystającą z map.Zwolniony fragment okna pojawia się ponownie po wznowieniu aplikacji.
Używam aktywności fragmentarycznej i fragmentu o nazwie Fragment-A.
W Fragment-A znajduje się przycisk, po kliknięciu przycisku pojawia się fragment Dialogu, wyświetla mapę z wcześniejszą lokalizacją otrzymaną z serwera.
Powiedzmy, że ten fragment okna dialogowego to DialogFragment-B.
Ma przycisk do zamknięcia, przycisk do nawigacji do aplikacji mapy Google, aby uzyskać wskazówki.
Jeśli użytkownik przejdzie do DialogFragment-B i powróci do Fragmentu-A, klikając przycisk zamykania, wszystko działa poprawnie.
Ale jeśli użytkownik kliknie przycisk Wstecz, istniejący fragment okna zostanie zamknięty, a aplikacja będzie działać normalnie.
Ale jeżeli użytkownik nacisnął przycisk home lub otrzymał telefon i onResume nazywa chociaż DialogFragment-B została zwolniona wcześniej, to pojawia się ponownie i naciskając blisko wywala aplikację z wyjątku null pointer
Oto mój kod, aby otworzyć 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);
W DialogFragment-B po kliknięciu przycisku zamykania, nazywam MyMapFragmentDialog.this.dismiss();
Proszę, jeśli ktoś napotkał ten problem i pokonał go, poprowadź mnie przez to.
Myślę, że zaniedbujecie zatwierdzenie transakcji: 'ft.remove (prev) .commit()' lub dodaj kolejną linię, np. 'Ft.commit();' –
Wypróbuj 'MyMapFragmentDialog' wewnątrz pętli if. 'Prev' staje się pusty i dodajesz do niego fragment – GoCrazy