Sadece eklemek istedim: -
Aşağıdakileri kullanarak backstack'ten dışarı çıkma
fragmentManager.popBackStack ()
parçaları işlemden kaldırmakla ilgilidir, parçayı ekrandan kaldıramaz. İdeal olarak, sizin tarafınızdan görülmeyebilir, ancak birbiri üzerine yığılmış iki veya üç parça olabilir ve arka tuşa basıldığında UI dağınık, yığılmış görünebilir.
Sadece basit bir örnek alarak: -
Diyelim ki fragmentmanager.replace () kullanarak Fragmnet B yükleyen bir fragmentA'ya sahipsiniz ve sonra bu işlemi kaydetmek için addToBackStack yapıyoruz. Böylece akış: -
ADIM 1 -> FragmentA-> FragmentB (FragmentB'ye geçtik, ancak A Parçası arka planda, görünür değil).
Şimdi fragmentB'de bir iş yapıyorsunuz ve Save düğmesine basınız - ki bu kaydedildikten sonra fragmentA'ya geri dönmelidir.
ADIM 2-> FragmentB'yi kaydettikten sonra, FragmentA'ya geri dönüyoruz.
ADIM 3 -> Çok yaygın bir hata ... Parça B'de fragmentA ile fragment Manager.replace () fragmentB yapacağız.
Ama gerçekte olan şey, FragmentB'nin yerine F Parçası A yüklüyoruz. Şimdi iki FragmentA var (biri STEP-1'den diğeri bu STEP-3'ten).
İki F Parçası örneği birbirinin üzerine istiflenebilir, bu görünmeyebilir, ancak oradadır.
Dolayısıyla, backstack'ı yukarıdaki yöntemlerle temizlesek bile, işlem temizlenir, ancak gerçek parçalar değil. İdeal olarak böyle bir durumda, kaydet düğmesine bastığınızda sadece fm.popBackStack () veya fm.popBackImmediate () yaparak fragmentA'ya geri dönmeniz gerekir. .
Bu yüzden doğru Step3-> fm.popBackStack (), zaten bellekte olan fragmentA'ya geri döner.