В настоящее время у меня есть одно действие, и к нему добавляются фрагменты (поиск, информация о песнях, настройки и т. Д.). Я реализовал навигацию на основе боковых панелей, поэтому теперь, как побочный эффект, tehre не ограничивается тем, сколько фрагментов добавлено в Backstack. Есть ли способ ограничить количество фрагментов или удалить старые записи? Каждый фрагмент фрагментов песни имеет рекомендованный список песен, и через него вы можете перейти к фрагменту фрагментов других песен. Легко можно иметь 30 фрагментов в backstack, которые, если у вас открыт DDMS, вы можете медленно видеть (но верно) размер кучи.Android - ограничение количества фрагментов в backStack?
Редактировать: Одна вещь, которую я пытался сделать, - это если пользователь нажал одну из опций бокового меню, если этот фрагмент уже находится в стоп-кадре, попробуйте вернуться к этому фрагменту, а не создавать экземпляр нового, но, конечно, , если пользователь находится на странице «Сведения о песне», тогда он ожидал, что отжатие назад приведет его к этому фрагменту, чтобы он не работал.
Edit 2: Это мой метод addFragment (наряду с предложением Фила):
public void addFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount() > 2) {
fm.popBackStack();
}
fm.beginTransaction()
.replace(R.id.fragment_container, fragment).addToBackStack("")
.commit();
}
Я просто попытался его, и предполагая свою историю фрагмент: A-> B-> C-> D, возвращаясь из D, выходит B-> A-> выход.
Я только что прошел 8 уровней, чтобы проверить: A-> B-> C-> D-> E-> F-> G-> H, и, возвращаясь из H, произошло то же самое: H-> B -> А-> выход.
Все фрагменты добавляются посредством этого метода выше. Я бы хотел увидеть: H-> G-> F-> exit.
Откуда мой Фраг? Предполагая, что я запускаю этот код, когда собираюсь добавить новый фрагмент, мне уже нужно иметь ссылку на все предыдущие фрагменты? – StackOverflowed
Ну, это всего лишь пример кода, myFrag может, например, быть активным в настоящий момент фрагментом. Этот код также будет работать с вызовом fm.popBackStack() внутри оператора if. –
Кажется, что вы на правильном пути, но я бы хотел, чтобы фрагменты OLDEST были удалены. См. Раздел «Редактирование» для пояснения. Я очень ценю вашу помощь до сих пор. – StackOverflowed