Ошибка в ViewPager, использующая его с другим фрагментом

Мне нужна ваша помощь.

У меня есть одно действие с двумя фрагментами: один фрагмент с простым TextView в LinearLayout и другой фрагмент: ViewPager с 3 фрагментами в FragmentPagerAdapter.

Я делаю транзакцию с действием замены, но у меня есть ошибка от ViewPager: java.lang.IllegalStateException: рекурсивная запись для executePendingTransactions.

Это исходный код, который показывает эту проблему, возможно, кто-нибудь знает, как это исправить.


person Maxim Yudin    schedule 30.08.2011    source источник
comment
Я решил эту проблему другим способом. В моем случае я создаю TabHost с 2 действиями, затем в первом действии я помещаю ViewPager с 3 фрагментами, а во втором фрагменте я помещаю просто фрагмент с текстом.   -  person Maxim Yudin    schedule 31.08.2011
comment
для вложенных фрагментов вам нужно передать getChildFragmentManager() в конструкторе вашего FragmentPagerAdapter/FragmentStatePagerAdapter   -  person Muhammad Babar    schedule 11.11.2014


Ответы (3)


ViewPager - это в основном фрагмент, и вы не можете помещать фрагменты во фрагменты. Период.

person Tyler    schedule 03.10.2011
comment
FragmentPagerAdapter и FragmentStatePagerAdapter должны использоваться с ViewPager, следовательно, фрагменты в ViewPager. - person Dandre Allison; 10.07.2012

Эм нет. ViewPager расширяет ViewGroup. Как это делает его фрагментом?

Да, вы правы, вложенные фрагменты не поддерживаются. Однако это работает, если у вас есть фрагмент, содержащий ViewPager, адаптер которого содержит несколько фрагментов. Поверь мне это работает. Я использую его в текущем проекте, над которым сейчас работаю, и у меня даже есть вложенные ViewPager без событий горизонтального касания, борющихся за контроль, поэтому, по сути, у меня есть фрагменты внутри фрагмента.

person Android Noob    schedule 04.10.2011
comment
Я попытался сделать именно то, что вы описываете, и получил ошибку, указанную в вопросе. Не могли бы вы показать нам, как вы этого добились? - person howettl; 08.10.2011
comment
Если кому-то интересно, рабочее решение можно найти здесь: stackoverflow.com/questions/7700226/ - person howettl; 09.10.2011

В версии 11 библиотеки поддержки Android теперь вы можете вкладывать фрагменты во фрагменты, чтобы избежать рекурсивного исключения. См. этот вопрос Как чтобы добавить фрагмент внутри ViewPager с помощью вложенного фрагмента (Android 4.2)

person Marco RS    schedule 16.11.2012