2014-05-16 28 views
9

Arka plan: Üç parça tutabilecek özel bir kap yazdım. Bu konteynerin durumuna bağlı olarak sadece iki veya bu üç parça görünür.Parça nasıl durdurulur/devam ettirilir

  1. Ben, ilgili değerle Fragment.setUserVisibleHint() yöntemi denir: Onların görünürlük değiştirildi parçaları bilgilendirmek İki seçeneğim denedik. Barındırılan fragmanlar bu yöntemi geçersiz kıldı ve uygun şekilde tepki verdi. Bu işe yaradı.

  2. Fragmanları gizlemek ve göstermek için FragmentTransaction.hide() ve FragmentTransaction.show() yöntemlerini aradım. Barındırılan fragmanlar Fragment.onHiddenChanged() öğesini aştı ve gerektiğinde tepki verdi. Bu da işe yaradı.

Sorunum, bu seçeneklerden herhangi biriyle memnun olmadığım. Görünmez parçayı standart duraklatılmış durumuna koymak istiyorum. Bu seçeneğin avantajı, kodun temiz ve basit tutulmasıdır, herhangi bir özel yöntemi (setUserVisibleHint() veya onHiddenChanged() gibi) geçersiz kılmama gerekmediğinden ve zaten uygulanmış olan onPause() ve onResume() içindeki herşeyi halledebilirim.

Soru: Ne doğru bir içine bir parça koymak için bir yol devlet durdurulmuş ve daha sonra bu durumdan tekrar devam etmek? Ayrıca, da denedim. Bu bir seçenek değil çünkü benim durumumda izin verilmeyen manzarayı yok ediyor.

+1

Bunun için bir çözüm buldunuz mu? Bende aynı problem var. 'FragmentTransaction.hide()' 'pause ', bu tür bir durumda bazı garip etkilere neden olan' onPause 'çağrısı yapmaz ... – mixable

+3

@mixable Bazı daha derin araştırmalar olduktan sonra, ayrılmadan duraklatılmış duruma koymak imkansızdır (onu kaldırmak. –

cevap

4

Parça parçalarınızı FragmentPagerAdapter (see source here) ile aynı yaşam döngüsü yordamları içine koymak için FragmentTransaction#attach ve FragmentTransaction#detach'u aramak istediğiniz gibi görünüyor.

detach() ile Fragment , onStop ve son olarak onDestroyView yaşam döngüsü yöntemlerle Fragment koyacağız ve sonra attach() ile yeniden takmak zaman onCreateView, onStart ve son olarak onResume yaşam döngüsü yöntemlerle gidecek žkartžlmasž .

Tek bir kaba bağlı birden çok parçaya sahip olabileceğinizden, etiketin kapsayıcılı kadar iyi bir şekilde kullanıldığından emin olmanız gerekir. Bu nedenle, Fragment referansını referansından almak zorundasınız. etiketi üzerinden yapılmalıdır.

+7

Benzer bir şey görmek istiyorum ama görünümü yok etmeden. Aksi takdirde tüm animasyonlar yavaş olacaktır. Aslında sadece sadece duraklatmak/devam ettirmek istiyorum. Bu seçeneği sunmadıkları çok garip. –

İlgili konular