2015-04-12 7 views
0

После того, как я выскочил назад, мои фрагменты не собираются в мусор? Их методы 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() не вызывается либо.

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^