Halihazırda bir etkinliğim var ve buna parçalar ekleniyor (arama, şarkı ayrıntıları, ayarlar vb.). Yan tabanlı menü navigasyonu yaptım, şimdi, bir yan etki olarak, tehre Backstack'a kaç tane Fragment ekleneceğine dair bir sınır değil. Parça sayısını sınırlayabilmem ya da eski girişleri kaldırabilmemin bir yolu var mı? Örneğin, her şarkı ayrıntıları parçası, önerilen bir şarkı listesine sahiptir ve bu sayede başka bir şarkı ayrıntıları bölümüne gidebilirsiniz. Arka taraftaki 30 parçanın bulunması kolayca mümkündür, ki DDMS açık ise, yığın boyutunu yavaşça (ama kesinlikle) artırarak görebilirsiniz.Android - backStack içindeki parça sayısını sınırlandırın?
Düzenleme: Yapmam gereken bir şey, bir kullanıcı yan menü seçeneklerinden birini tıklatırsa, bu parça zaten arka taraftaki bir yerdeyken, yeni bir örnek oluşturmak yerine bu parçaya geri dönmeyi denerse Eğer bir kullanıcı bir Şarkı Ayrıntıları sayfasındaysa, o zaman geri tuşuna basarak onu çalışmasına izin vermeyecektir.
Düzenleme 2: Bu (Phil önerisi ile birlikte) benim addFragment yöntemidir:
public void addFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount() > 2) {
fm.popBackStack();
}
fm.beginTransaction()
.replace(R.id.fragment_container, fragment).addToBackStack("")
.commit();
}
Sadece denedim ve benim Fragment geçmişini varsayarak geçerli: A-> B-> C-> D, D'den geri dönerek B-> A-> çıkışına gider.
Test etmek için 8 seviye daha derinlere gittim: A-> B-> C-> D-> E-> F-> G-> H ve H'den geri dönüyorum, aynı şey oldu: H-> B -> A-> çıkış.
Yukarıdaki parçalardan tüm Fragmanlar eklenir. Görmek istediğim: H-> G-> F-> exit.
Nerede myFrag nereden geliyor? Yeni bir Fragman eklemek üzereyken bu kodu çalıştırdığımı varsayarsak, önceden tüm Fragmanlar için bir referansa sahip olmak zorunda mıyım? – StackOverflowed
Eh, bu sadece bir örnek kod, myFrag örneğin şu anda aktif Fragman olabilir. Bu kod ayrıca if ifadesinin içinde fm.popBackStack() öğesini çağırmakla da çalışır. –
Doğru yoldasınız gibi görünüyor, ancak OLDEST parçaları çıkarılmasını istiyorum. Açıklama için lütfen bkz. Şimdiye kadar yardımın için minnettarım. – StackOverflowed