Intereting Posts

FragmentPagerAdapter внутри фрагмента

У меня возникли проблемы с реализацией дизайна, основанного на нескольких ViewPagers.

На высоком уровне у меня есть FragmentActivity с только FrameLayout, поскольку это контент. У меня есть 3 разных фрагмента, которые я хочу отобразить. Все 3 являются полноэкранными, и только 1 будет использоваться одновременно.

Фрагмент 1 является основным фрагментом с некоторыми TextViews и ImageViews. Фрагмент 2 имеет ViewPager и FragmentPagerAdapter, который передает ему несколько простых фрагментов. Фрагмент 3 имеет ViewPager и FragmentPagerAdapter, который передает ему несколько простых фрагментов (отличных от фрагмента 2)

В моем FragmentActivity onCreate () я получаю FragmentManager и начинаю транзакцию, чтобы заменить все, что есть в моем FrameLayout, с новым экземпляром фрагмента 2.

На данный момент все работает так, как ожидалось. Мой ViewPager во Фрагменте 2 работает отлично.

Теперь у меня есть опция меню, которая заменяет фрагмент 2 в моем FrameLayout новым экземпляром фрагмента 3. Это также отлично работает.

Проблема возникает, когда я пытаюсь вернуть Fragment 2 в FrameLayout с другой заменой транзакции. Я вижу, что мой PagerIndicater наверху, но мои страницы пустые.

Я попытался просто создать новый экземпляр моего фрагмента 2 и вызвать транзакцию замены. Я также попытался установить тег на своих фрагментах, когда я вызываю замену и добавляю проверку findFragmentByTag перед заменой вместо создания нового экземпляра. Оба дали мне тот же результат пустых страниц после моей второй замены.

Для справки Мой первый дизайн был просто FragmentActivity с ViewPager и ViewIndicater. У меня только Фрагмент 2 и Фрагмент 3 из моего описания выше и пункт меню для переключения между ними. Для переключения у меня было два разных FragmentPagerAdapters, которые были определены и только что назывались ViewPager.setAdapter, чтобы установить выбранный FragmentPagerAdapter. Это работало отлично, но теперь мне нужен новый фрагмент верхнего уровня, который вообще не использует ViewPager. Вот почему я решил перенести свои ViewPagers в свои собственные фрагменты. Моя идея в том, что я просто поменяю свои фрагменты на FrameLayout.

У меня нет моего кода передо мной прямо сейчас, поэтому я не могу опубликовать его, но я добавлю код на свой вопрос завтра, чтобы помочь облегчить ответы.

Solutions Collecting From Web of "FragmentPagerAdapter внутри фрагмента"

Этот вопрос – возможный дубликат перехода назад в FragmentPagerAdapter -> фрагменты пустые .

Если ваше приложение может обрабатывать его (API 17), используйте getChildFragmentManager () . Эта проблема возникает при использовании Фрагмента для размещения вашего ViewPager и использования FragmentPagerAdapter. Переход на FragmentStatePagerAdapter также помог устранить проблему, но я все же думаю, что использование getChildFragmentManager () – самая умная вещь.

Brockoli вы можете использовать не «хороший способ». Но для меня это сработало.

Вы можете использовать в представлении 2 макета, где вы связываете фрагменты. Сначала – фрагмент с фрагментами. Второе – для других фрагментов.

При замене фрагмента фрагменты не заменяют, а только меняют видимость первого макета, чтобы уйти и добавить новый фрагмент во второй макет. На задней панели удалите фрагмент из второго макета и установите видимость для видимости первого макета.