После того, как я выскочил назад, мои фрагменты не собираются в мусор? Их методы onStop()
вызывают, но не их методы onDestroyView()
или onDestroy()
.После того, как выскочили назад, мои фрагменты не были собраны в мусор.
Как я могу гарантировать, что их методы onDestory()
вызываются?
Я совершил ошибку, сделав «действие Бога», и все мои фрагменты .replace()
один контейнер FrameLayout
. Скажем, у меня есть четыре фрагмента, FragA
, FragB
, FragC
и FragD
с backstack, который выглядит примерно так:
FragA
->FragB
->FragC
->FragD
FragD is the only visible fragment. Then, I call .
popBackstack() `
FragA
->FragB
->FragC
= = FragD
FragD
был отсоединен, и FragC
теперь отображается для пользователя. Когда вы пытаетесь создать экземпляр нового FragD
(от FragC
), он создан, и на моей куче есть два экземпляра FragD
. И первый FragD
экземпляр экземпляра onDestroyView()
не вызывается.
Как исправить это?
EDIT: Вот пример того, как я currecntly замена фрагментов в моем UI:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new SearchScreenFragment())
.addToBackStack(null)
.commit();
EDIT2: onDetach()
не вызывается либо.
Вы должны принять этот ответ. – Heinrich
не может принять его в течение двух дней :( – ZakTaccardi
Ah, ok then.: / – Heinrich