Программно удаляет ViewPager, когда (или как я могу убедиться) что фрагменты уничтожены?

Предварительно выполнив поиск по этой проблеме, я могу найти множество обсуждений, касающихся динамического добавления и удаления выбранныхFragmentсViewPager, Однако меня здесь действительно беспокоит то, как я могу программно удалить весьViewPager & APOS; & Чисто APOS; от его содержанияViewGroup, когда этоViewPager был использован для отображенияFragmentчерезFragmentPagerAdapterи убедитесь, что содержащиесяFragments уничтожены должным образом.

Чтобы еще больше расширить этот вопрос, у меня есть двухпанельный макет с альбомной ориентацией, в котором делается выборка из списка внутриFragment на левой стороне, и выбранный контент затем помещается справа вFrameLayout, Ключевым моментом является то, что содержание может быть или не быть разбито на страницы. Поэтому содержимое должно отображаться в видеViewPager формат, или если он не разбит на страницы, то он должен быть представлен однимFragment непосредственно.

Чтобы показать одинFragmentЯ просто выполняюFragmentTransaction как обычно, чтобы разместитьFragment вFrameLayout контейнер. Если, с другой стороны, это содержимое, которое нужно разбить на страницы, то вместо этого я создаюViewPager и добавить его в качестве ребенка отFrameLayout.

Когда мне нужно изменить контент, тогда, если предыдущий контент был автономнымFragment тогда я могу просто удалить его черезFragmentTransaction .remove(), Когда я делаю это,Fragment проходит черезonPause() ... onDestroy() цикл, как и ожидалось. Если предыдущий контент былViewPager затем я удаляю его изFrameLayout с помощью.removeAllViews(), Здесь я подхожу к проблеме: я не вижу ни одного изonPause() ... onDestroy() методы, вызываемые в любом изFragments, которые были проведены в этомViewPager черезFragmentPagerAdapter.

С точки зрения пользователя, приложение работает нормально. После нескольких раундовViewPager будучи удаленным, я вижу, что GC восстанавливает память. Однако мне не нравится тот факт, что этиFragmentS & APOS; методы конца срока службы не вызываются, поскольку я не могу выполнить какую-либо очистку внутри них, и это просто не кажется «правильным».

Есть ли способ, которым я могу воспользоваться, чтобы удалитьViewPager& APOS; sFragmentкогдаViewPager может быть оторван от своего родителя? Другими словами, когда я знаю, чтоViewGroup больше не используется, я бы выполнилFragmentTransactionгде-то (возможно, вFragmentPagerAdapter) удалить теFragments.

Кроме того, я понимаю, что я мог бы просто сохранитьViewPager справа постоянно и динамически меняйте местамиFragmentвнутри. Конечно, просто не имело бы значения, что в определенные моменты он будет занимать только одну страницу. Если это будет лучший путь, я сделаю для этого свой код, но я был бы признателен за мнения.

Ответы на вопрос(1)

Ваш ответ на вопрос