Fragment'larda onBackPressed() nasıl uygulanır?
Android Activity'de uyguladığımıza benzer şekilde Android Fragment'ta onBackPressed()
uygulayabileceğimiz bir yol var mı?
Fragment yaşam döngüsünde onBackPressed()
bulunmadığından. Android 3.0 fragmentlerinde onBackPressed()
işlevini aşmak için başka bir alternatif yöntem var mı?
418
3
HaMMeRed'in cevabına göre nasıl çalışması gerektiğinin sözde kodu burada. Diyelim ki ana aktivitenizin adı
BaseActivity
ve alt parçaları var (SlidingMenu lib örneğinde olduğu gibi). İşte adımlar:Öncelikle arayüz oluşturmamız ve jenerik metoda sahip olmak için arayüzünü uygulayan sınıf oluşturmamız gerekir
Sınıf arayüzü
OnBackPressedListener
oluşturunOnBackPressedListener` becerilerini uygulayan bir sınıf oluşturun
Şu andan itibaren
BaseActivity
kodumuz ve onun parçaları üzerinde çalışacağızSınıfınız
BaseActivity
üzerinde özel dinleyici oluşturunBaseActivity
içinde dinleyici ayarlamak için yöntem oluşturunoverride
onBackPressed
içinde bunun gibi bir şey uygulayınonCreateView
içindeki fragmanınızda dinleyicimizi eklemelisinizİşte, şimdi fragmanda geri tıkladığınızda özel on back yönteminizi yakalamanız gerekir.
Bu tür bir işlevsellik istiyorsanız, bunu etkinliğinizde geçersiz kılmanız ve ardından tüm parçalarınıza, geri düğmesine her basıldığında ilgili parçada çağırdığınız bir
YourBackPressed
arayüzü eklemeniz gerekir.Düzenleme: Önceki cevabıma ekleme yapmak istiyorum.
Bunu bugün yapacak olsaydım, bir yayın kullanırdım veya diğer panellerin ana/ana içerik paneliyle birlikte güncellenmesini bekliyorsam muhtemelen sıralı bir yayın kullanırdım.
Destek Kütüphanesindeki
LocalBroadcastManager
bu konuda yardımcı olabilir ve yayınıonBackPressed
içinde gönderir ve önemseyen parçalarınıza abone olursunuz. Messaging'in daha ayrık bir uygulama olduğunu ve daha iyi ölçekleneceğini düşünüyorum, bu yüzden şu anda resmi uygulama önerim bu olacaktır. SadeceIntent'in eylemini mesajınız için bir filtre olarak kullanın. yeni oluşturduğunuz
ACTION_BACK_PRESSED'i gönderin, aktivitenizden gönderin ve ilgili fragmanlarda dinleyin.Aşağıdaki gibi parçalarınız arasında geçiş yaparken
addToBackStack
eklemeniz yeterlidir:addToBackStack(null)` yazarsanız, bunu kendisi halledecektir, ancak bir etiket verirseniz, bunu manuel olarak halletmeniz gerekir.