Kā implementēt onBackPressed() fragmentos?
Vai ir veids, kā mēs varam implementēt onBackPressed()
Android fragmentā, līdzīgi kā mēs to īstenojam Android aktivitātē?
Tā kā fragmenta dzīves ciklā nav onBackPressed()
. Vai ir kāda cita alternatīva metode, lai pārvarētu onBackPressed()
Android 3.0 fragmentos?
418
3
Saskaņā ar @HaMMeRed atbildi šeit ir pseidokods, kā tas darbojas. Pieņemsim, ka jūsu galvenā darbība saucas
BaseActivity
, kurai ir atvasinātie fragmenti (kā SlidingMenu lib piemērā). Šeit ir soļi:Vispirms mums ir jāizveido saskarne un klase, kas implementē tās saskarni, lai būtu vispārīga metode.
Izveidot klases interfeisu
OnBackPressedListener
.Izveidojiet klasi, kas īsteno
OnBackPressedListener
prasmes.Tagad mēs strādāsim ar mūsu kodu
BaseActivity
un tā fragmentiem.Izveidojiet privātu klausītāju savas klases
BaseActivity
augšpusē.izveidojiet metodi klausītāja iestatīšanai
BaseActivity
.override
onBackPressed
implementēt kaut ko līdzīgu šimsavā fragmentā
onCreateView
jums jāpievieno mūsu klausītājsVoila, tagad, kad jūs noklikšķiniet atpakaļ fragmentā, jums vajadzētu noķert savu pielāgoto atpakaļ metodi.
Ja vēlaties šādu funkcionalitāti, jums būtu nepieciešams to pārspēt savā aktivitātē un pēc tam pievienot interfeisu
YourBackPressed
visiem saviem fragmentiem, kuru izsaucat attiecīgajā fragmentā, kad tiek nospiesta atpakaļgaitas poga.Rediģēt: Es gribētu papildināt savu iepriekšējo atbildi.
Ja man tas būtu jādara šodien, es izmantotu apraidi vai, iespējams, sakārtotu apraidi, ja es sagaidītu, ka citi paneļi atjaunināsies vienlaicīgi ar galveno/galveno satura paneli.
Ar to var palīdzēt
LocalBroadcastManager
atbalsta bibliotēkā, un jūs vienkārši nosūtiet apraidionBackPressed
un parakstieties savos fragmentos, kas rūp. Es domāju, ka Messaging ir vairāk atdalīta implementācija un būtu labāk mērogojama, tāpēc tagad tā būtu mans oficiālais implementācijas ieteikums. Vienkārši izmantojietIntent
's darbību kā ziņojuma filtru. nosūtiet savu jaunizveidotoACTION_BACK_PRESSED
, nosūtiet to no savas darbības un klausieties to attiecīgajos fragmentos.Vienkārši pievienojiet
addToBackStack
, kamēr pārejat starp fragmentiem, kā norādīts zemāk:ja jūs rakstāt
addToBackStack(null)
, tas pats to apstrādās, bet, ja jūs sniedzat tagu, jums tas jāapstrādā manuāli.