Hi Ich entwickle eine App, die Karten verwendet.Dismissed Dialogfragment wird wieder angezeigt, wenn App fortgesetzt wird
Ich benutze Fragment Activity und ein Fragment mit dem Namen Fragment-A.
In Fragment-A gibt es eine Schaltfläche. Wenn Sie auf diese Schaltfläche klicken, wird ein Dialogfragment angezeigt, das eine Karte mit einem zuvor vom Server empfangenen Standort anzeigt.
Nehmen wir an, dieses Dialogfragment ist DialogFragment-B.
Es hat eine Schaltfläche zum Schließen, eine Schaltfläche, um zur Google Maps App zu navigieren, um Wegbeschreibungen zu erhalten.
Wenn Benutzer zu DialogFragment-B navigiert und zum Fragment-A zurückkehrt, kann durch Klicken auf die Schaltfläche zum Schließen alles ordnungsgemäß ausgeführt werden.
Wenn der Benutzer jedoch auf die Schaltfläche Zurück klickt, wird das vorhandene Dialogfeldfragment normal geschlossen und die App funktioniert normal.
Aber wenn der Benutzer dann Home-Taste gedrückt oder einen Anruf empfangen und onResume heißt, obwohl das DialogFragment-B früher entlassen wird, erscheint es und drücken nahe stürzt die App mit einer Null-Zeiger Ausnahme
Hier Mein Code um das DialogFragment-B zu öffnen.
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 auf Schließen-Schaltfläche klicken, rufe ich MyMapFragmentDialog.this.dismiss();
Bitte, wenn jemand dieses Problem begegnet und überwunden, führen Sie mich durch.
Ich denke, Sie vernachlässigen die Transaktion zu verpflichten: 'ft.remove (prev) .commit()' oder fügen Sie eine andere Zeile wie 'ft.commit();' –
Versuchen Sie den 'MyMapFragmentDialog' innerhalb der if-Schleife. Das 'prev' wird null und du fügst das Fragment hinzu – GoCrazy