Grafikte uygulama akış şovu verildiğinde ve aşağıdaki metinsel olarak açıklandığı gibi.Backstack içinde en üstte olmayan parça yeniden başlıyor
- Fragment 1
disallowAddToBackStack
ayarlayarak backstack en düşük parçası ama değil. - Parça 2,
fragmentTransaction.addToBackStack()
kullanılarak yığının üstüne itilir. - Yığın üzerine yeni bir parça 1 örneği itilir.
- En çok parça (parça 1) yığından atılır.
- Etkinlik 2 ön plana dönüşür.
- Etkinlik 1 ön plana dönüşür.
private void changeContainerViewTo(int containerViewId, Fragment fragment, Activity activity, String backStackTag) { if (fragmentIsAlreadyPresent(containerViewId, fragment, activity)) { return; } final FragmentTransaction fragmentTransaction = activity.getFragmentManager().beginTransaction(); fragmentTransaction.replace(containerViewId, fragment); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); if (backStackTag == null) { fragmentTransaction.disallowAddToBackStack(); } else { fragmentTransaction.addToBackStack(backStackTag); } fragmentTransaction.commit(); }
sorun
zaman aktivitesi 1. parçanın en örneği de devam eder, son aşamada 1 devam eder:
Burada fragmanlarını işlemek için kullanımı yaygın bir yöntemdir. Bu noktada, parça 1, getActivity()
'da null
'u döndürür.
Soru
- Neden olmayan bir parçası yığını üzerinde en üst sürdürülür? Parçayı sürdürmek doğruysa - ayrılmış bir parçayla nasıl başa çıkmalıyım?
İlk Fragment1 ve Fragment2 aynı konteyner görünümü ve ikinci adımda hangi işlemi kullanıyorsunuz? – Evos
Evet, Fragment1 ve Fragment2 aynı kapsayıcı görünümünü kullanır. – JJD
Ve işlem türü hakkında ne diyorsunuz: "değiştir", "ekle"? – Evos