Mesaj panolarındaki Google mühendislerine göre bile parça yönetim yöntemlerinin adlandırılması çok kafa karıştırıcıdır (yukarıdaki yorumlara bakın). İşlerin gerçekte nasıl çalıştığını anlamak için kendime küçük bir demo yaptım. İşte bulgularım. Hatalıysam beni düzeltmekten çekinmeyin.
Bir Aktiviteye başlangıçta bir Parça eklemek için şunu kullanırsınız: getFragmentManager (). BeginTransaction (). Add (R.id.container, mFragment) .commit ().
Bu, Aktiviteyi Parça ile ilişkilendirir ve ayrıca bir Görünümü Parça ile ilişkilendirir.
Ortaya çıkan yaşam döngüsü olayları ve diğer önemli yöntem dönüş değerleri şunlardır:
onAttach()
onCreate()
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
Bir Etkinlikten bir Parçayı kaldırmak için şunu kullanırsınız: getFragmentManager (). BeginTransaction (). Remove (mFragment) .commit ().
Bu, bir Görünüm veya bir Aktivite ile herhangi bir ilişkiyi kaldırır.
Ortaya çıkan yaşam döngüsü olayları ve diğer önemli yöntem dönüş değerleri şunlardır:
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
mFragment.getView() == null: true
mFragment.getActivity() == null: true
Parçayı buraya yeniden ekledim
Bir Etkinlikten eklenen bir Parçayı ayırmak için şunu kullanırsınız: getFragmentManager (). BeginTransaction (). Detach (mFragment) .commit ().
Bu, bir Görünüm ile herhangi bir ilişkiyi kaldırır, ancak Aktivite ile olan ilişkiyi korur.
Ortaya çıkan yaşam döngüsü olayları ve diğer önemli yöntem dönüş değerleri şunlardır:
onPause()
onStop()
onDestroyView()
mFragment.getView() == null: true
mFragment.getActivity() == null: false
Activity'den ayrılan bir Parçayı yeniden eklemek için şunu kullanırsınız: getFragmentManager (). BeginTransaction (). Attach (mFragment) .commit ().
Bu, Parça ile ilişkilendirmek için yeni bir Görünüm oluşturur ve Aktivite ilişkisini korur.
Ortaya çıkan yaşam döngüsü olayları ve diğer önemli yöntem dönüş değerleri şunlardır:
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
Dikkat edilmesi gereken diğer önemli noktalar: Bir Parçayı çıkarırsanız ve daha sonra attach () yerine add () kullanarak tekrar eklemeye çalışırsanız, hiçbir şey değişmeyecek gibi görünecektir.
remove () kullanarak, add () yerine attach () kullanarak kaldırılmış bir Parça eklemeye çalışırsanız, hiçbir şey değişmeyecek gibi görünür.
GetView () null döndürdüğünde, Fragment hala oluşturduğu son Görünüme dahili referanslara sahip olabilir. Bu Görünüm artık geçerli değildir ve kullanılmamalıdır.
Fragmentedilir müstakil , onunonPause,onStopveonDestroyViewyöntemleri (bu sırayla) yalnızca denir. Bir diğer taraftan,Fragmentbir çıkarılmış olan,onPause,onStop,onDestroyView,onDestroyveonDetach(bu sırayla) yöntemleri olarak adlandırılır. Benzer şekilde, bağlama ,Fragment'ninonCreateView,onStartveonResumeyöntemleri sadece olarak adlandırılır; ne zaman ve ekleme ,Fragment'inonAttach,onCreate,onCreateView,onStartveonResumeyöntemleri (bu sırayla) olarak adlandırılır.