Der Fragetitel klingt vielleicht kompliziert, aber hier ist meine Situation.
Ich habe ein Kartenfragment innerhalb einer Aktivität. Einfach. Aktivieren der Speicherberechtigung, um die Anzeige von Map zuzulassen, funktioniert einwandfrei. Hintergründe der App durch Drücken der Home-Taste, dann deaktivieren Sie die Speicherberechtigung und öffnen Sie die App von der letzten Aufgabe, App stürzt ab.
Das Problem besteht darin, onResume () der Host-Aktivität aufzurufen, onCreate () wird sowohl auf der Host-Aktivität als auch auf onCreateView () des Map-Fragments aufgerufen. So wirft es Ausnahmen.
Es scheint, als ob der App-Prozess beendet wird, wenn die Berechtigung geändert wird und somit die Aktivität neu erstellt wird.
%Vor%Von super.onStart () von der Aktivität
Die praktikable Lösung besteht nun darin, getSupportFragmentManager().popBackStackImmediate();
in onCreate () der Aktivität aufzurufen, um zu verhindern, dass das Kartenfragment neu erstellt werden muss.
popBackStack () wird in diesem Fall nicht funktionieren, da es asynchron ist.
Ich hatte ähnliche Probleme mit der dynamischen Änderung der App-Berechtigung. Nach etwas Ausgrabung, was ich verstanden habe, könnte auch hilfreich für Sie sein.
Das Ändern der Berechtigung führt zu einer Beendigung Ihrer Anwendung durch das System. Wenn Sie nun Ihre Anwendung über den Übersichtsbildschirm öffnen, wird die Anwendung neu gestartet. Dies ist der Hauptgrund für Ihren Absturz, da Sie möglicherweise eine Operation für das Fragmentobjekt ausführen ist jetzt null.
Hier ist ein wichtiger Punkt zu beachten, dass vor dem Abbruch ein Fragmentstatus im sourcedinstance-Objekt gespeichert wird.
Um den Absturz zu stoppen, sollten Sie die Fragment-Instanz mit dieser Codezeile aufrufen -
%Vor%Hier ist "MAP FRAG" ein Tag, den Sie Ihrem Fragment geben müssen.
teilen Sie, wenn Sie irgendwelche Verwirrung haben.
Tags und Links android android-fragments android-permissions android-6.0-marshmallow