Ich habe gelernt, wie man in Android programmiert, aber ich habe ein paar Probleme.getFragmentManager() gibt null beim zweiten Aufruf zurück
Gerade jetzt weiß ich nicht wirklich, wie man eine Fragment
beendet. Ich meine, wenn ich die Methode getActivity().finish()
verwende, sollte meine Activity
finish()
. Ich habe darüber gelesen, und es ist überhaupt nicht korrekt. Ich stieß auf this post:
Auch onDestroy() ist kein Destruktor. Es zerstört das Objekt tatsächlich nicht. Es ist nur eine Methode, die auf einem bestimmten Zustand basiert. So Ihre Instanz ist immer noch am Leben und sehr gut * nach der Superklasse onDestroy() läuft und returns.Android hält Prozesse rund um der Benutzer möchte die App neu starten, macht dies die Startphase schneller. Der Prozess wird nichts tun, und wenn der Speicher zu muss zurückgewonnen werden, wird der Prozess
Und this one getötet werden:
Bedenken Sie, dass Sie dann Hintergrund Ihrer Anwendung, und dann wird es getötet . Wenn Sie zurückkommen, wird Android daran denken, dass Sie die Fragments A, B und C im Fragmentmanager verwendet haben, und so erstellt es für Sie neu und fügt sie dann hinzu. Allerdings sind diejenigen, die der Fragment-Manager jetzt sind nicht diejenigen, die Sie in Ihren Fragmenten Liste in Ihrer Aktivität haben.
In meinem Fall habe ich zwei Aktivitäten und zwei Fragmente. Das erste Mal, dass ich diesen Prozess benutzt habe, hat es perfekt funktioniert.
- ich zu meinem zweiten
Activity
vom ersten Anruf über eineIntent
- ich zum ersten Anruf
Fragment
- ich von den ersten
Fragment
zum zweiten Anruf
Das Problem ist, dass, wenn ich den Knopf "Reset" drücke, dass es meine Activity
von der zweiten Fragment
beendet (so geht es zum ersten Activity
). Danach wiederhole ich den gesamten Prozess und es tatsächlich funktioniert, aber wenn ich versuche, um die nächste Zeile zu implementieren zu halten Aktualisierung der Daten:
private BroadcastReceiver estadoIAReceiver = new BroadcastReceiver() {
//Cuando cambia el estado de indoor atlas actualizo la interfaz con sus propiedades
@Override
public void onReceive(Context context, Intent intent) {
Log.i("VFragment", "Cambio estado IA");
//Ejecutar metodo de un fragment desde una actividad
infoF = (InformacionFragment) getFragmentManager().findFragmentById(R.id.posicionamiento_layout);
infoF.actualizaInfoEstadoIA();
infoF.onResume();
}
};
Es null
weil getFragmentManager().findFragmentById(R.id.posicionamiento_layout);
kehrt ausfällt. Also, im Grunde ist meine Frage; ist infoF
versucht, auf die gleiche Fragment
von der ersten Zeit zugreifen, aber es existiert nicht, so dass es null
zurückgibt?
Ich verstehe Ihre Frage nicht, aber wenn das Fragment nicht in FragmentManager (ist Null), dann sollten Sie ein neues hinzufügen, weil es zerstört wurde, und aus Fragmentmanager –
Ich meine, der Code funktioniert der erste Zeit (also während der ersten Zeit, dass ich es ausführe, bekomme ich nicht "null"). Also ich weiß nicht wirklich, warum bekomme ich es @ Bryan –
Ich denke, du meintest @VladMatvienko. Wie auch immer, zeige mehr Code; Es gibt nichts in dem von Ihnen bereitgestellten Code, der zeigt, warum 'getFragmentMangager() '' null' zurückgibt. Auch diese Zeile: "Ich rufe vom ersten' Fragment' zum zweiten "klingt verdächtig. Sie sollten nicht von einem "Fragment" zum anderen aufrufen, die "Aktivität" sollte Transaktionen zwischen Fragmenten behandeln. – Bryan