Ich habe in letzter Zeit viel mit Fragmenten gearbeitet und ich war nur neugierig, was die beste Vorgehensweise ist, um einen Verweis auf die Elternaktivität eines Fragments zu verwenden. Wäre es besser, getActivity() aufzurufen oder eine parentActivity-Variable für den onActivityCreated-Callback initialisiert zu haben.Best Practice, um die Elternaktivität eines Fragments zu referenzieren?
Antwort
Dies ist eigentlich im offiziellen Android-Dokument zu Fragmenten enthalten. Wenn Sie den Kontext der übergeordneten Aktivität (z. B. Toast, Dialog) benötigen, rufen Sie getActivity()
. Wenn Sie die Callback-Methoden in der Schnittstelle des Fragments aufrufen müssen, sollten Sie eine Callback-Variable verwenden, die in onAttach(...)
instanziiert wird.
public static class FragmentA extends ListFragment {
ExampleFragmentCallbackInterface mListener;
...
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (ExampleFragmentCallbackInterface) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface ");
}
}
...
}
getActivity() ist am besten. Sie müssen keine Variable zum Speichern pflegen (immer, bis zum App-Zyklus!). Rufen Sie bei Bedarf die Methode auf und verwenden Sie! :)
Wenn Sie in dem Fragment sind, können Sie getActivity nennen(); Wenn Sie sich im Fragment befinden, können Sie auch getApplicationContext() aufrufen. GetContext(); In den meisten Fällen erledigt getActivity() alles, was Sie brauchen.
- 1. Referenzieren JAXB Gläser - Best Practice
- 2. Best Practice zum Aktualisieren von Argumenten eines Fragments?
- 3. Best Practice, um eine Datenbank zu versionieren
- 4. Best Practice, um die Quelle der PHP-Skriptbeendigung zu finden
- 5. Realm Best Practice, um kaskadenartiges Löschen zu erreichen
- 6. Enum zu int Best Practice
- 7. Best Practice zum Schreiben eines Code-Generators
- 8. Python 3 Best-Practice-Argument, um
- 9. BLL-Fehler Best Practice
- 10. Best Practice eine Website
- 11. Best Practice für Datenbank Kreuzwertspeicher
- 12. Android - Best Practice, um eine Android-App erneut zu veröffentlichen?
- 13. Best Practice, um gemeinsame Schritte der Gurke zu halten
- 14. Best Practice, um den neuen Post nach redirect_to zu markieren?
- 15. Best Practice, um den Standard-Objekt-Wrapper zu erhalten?
- 16. Best Practice, um weltweit ein Modul in Sails.js zu benötigen?
- 17. Best Practice, um eine Client-Trennung in .NET zu erkennen?
- 18. Best Practice, um veralteten Code in Ruby zu markieren?
- 19. C# Datenverbindungen Best Practice?
- 20. Best Practice, um Drittanbieter-SSL-Zertifikat in Java zu behandeln
- 21. Best Practice, um globale Variablen in Node zu vermeiden?
- 22. redis json best practice
- 23. Asp.Net Paginierung best practice
- 24. AnuglarJs Best Practice, um zu überprüfen, ob undefined und Null
- 25. Bereitstellungsvoraussetzungen Best Practice
- 26. PHP-Kontaktformular Best Practice
- 27. Best Practice für die Quellcodeverwaltung eines benutzerdefinierten Open Source-Projekts
- 28. jQuery laden Best Practice
- 29. Spring Webflow Best Practice
- 30. Best Practice response.getOutputStream
Die Verwendung von FragmentCallbackInterface ist meine bevorzugte Methode, dies zu implementieren. –
@James: Können Sie bitte erklären, warum dieser Ansatz besser ist als getActivity()? Manchmal gibt getActivity() null zurück und die App stürzt ab. Kann man mit dem obigen Ansatz sicher sein, dass die App nicht abstürzt? Vielen Dank. – Rajat
Wenn getActivity() null zurückgibt, wurden Sie noch nicht angefügt, also wäre 'mlistener' auch null. Dieser Ansatz ist besser als die Verwendung von 'getActivity()', da sichergestellt wird, dass die Aktivität, mit der Sie verbunden sind, die Schnittstelle implementiert, die für die Arbeit mit dem Inhalt im Fragment erforderlich ist. –