Hoe onBackPressed() implementeren in Fragmenten?
Is er een manier waarop we onBackPressed()
kunnen implementeren in Android Fragment vergelijkbaar met de manier waarop we in Android Activity implementeren?
Aangezien de Fragment lifecycle niet onBackPressed()
heeft. Is er een andere alternatieve methode om onBackPressed()
in Android 3.0 fragmenten te overbruggen?
418
3
Volgens @HaMMeRed antwoord hier is pseudocode hoe het zou moeten werken. Laten we zeggen dat uw hoofdactiviteit
BaseActivity
wordt genoemd die kindfragmenten heeft (zoals in SlidingMenu lib voorbeeld). Hier zijn de stappen:Eerst moeten we een interface maken en een klasse die de interface implementeert om een generieke methode te hebben
Maak de interface
OnBackPressedListener
Maak een klasse die de vaardigheden van
OnBackPressedListener
implementeertVanaf nu gaan we werken aan onze code
BaseActivity
en zijn fragmentenMaak een private listener bovenop de
BaseActivity
klasseMaak een methode om de luisteraar in
BaseActivity
in te stellenin override
onBackPressed
implementeer iets als ditin je fragment in
onCreateView
moet je onze listener toevoegenVoila, nu als je terug klikt in fragment zou je je aangepaste on back methode moeten vangen.
Als je dat soort functionaliteit wilt, moet je het in je activiteit overriden, en dan een
JeBackPressed
interface toevoegen aan al je fragmenten, die je aanroept op het relevante fragment wanneer de terug-knop wordt ingedrukt.Edit: Ik'zou graag mijn vorige antwoord willen aanvullen.
Als ik dit vandaag zou doen, zou ik'een broadcast gebruiken, of eventueel een geordende broadcast als ik verwachtte dat andere panelen unisono zouden updaten naar het master/main content panel.
LocalBroadcastManager
in de Support Library kan hierbij helpen, en je stuurt de broadcast gewoon inonBackPressed
en abonneer je in je fragmenten die erom geven. Ik denk dat Messaging een meer ontkoppelde implementatie is en beter zou schalen, dus het zou nu mijn officiële implementatie-aanbeveling zijn. Gebruik gewoon deIntent
's action als filter voor je bericht. stuur je nieuw aangemaakteACTION_BACK_PRESSED
, verstuur het vanuit je activity en luister er naar in de relevante fragmenten.Voeg
addToBackStack
toe tijdens de overgang tussen je fragmenten, zoals hieronder:Als je
addToBackStack(null)
schrijft, handelt hij dat zelf af, maar als je een tag opgeeft, moet je dat handmatig doen.