У меня есть деятельность, в которой есть два фрагмента. Действие начинается с отображения загрузчика при загрузке объекта. Загруженный объект затем передается обоим фрагментам в качестве аргументов с помощью методов newInstance и прикрепляются эти фрагменты.FragmentManager уже выполняет транзакции. Когда безопасно инициализировать пейджер после фиксации?
final FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container1, Fragment1.newInstance(loadedObject));
trans.replace(R.id.container2, Fragment2.newInstance(loadedObject));
trans.commit();
Второй фрагмент содержит android.support.v4.view.ViewPager и вкладки. onResume мы инициализируем это нравится следующим
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4
tabLayout.setupWithViewPager(viewPager);
Проблема андроида затем бросает
java.lang.IllegalStateException: FragmentManager уже выполняется сделок
С помощью этой трассировки стека: (Я взял android.support
из имен пакетов только для краткости)
v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1620) на v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:637) на v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java: 143) на v4.view.ViewPager.populate (ViewPager.java:1235) в v4.view.ViewPager.populate (ViewPager.java:1083) на v4.view.ViewPager.setOffscreenPageLimit (ViewPager.java:847)
Привод показывает, удалено ли setOffscreenPageLimit(...);
. Есть ли другой способ избежать этой проблемы?
Когда в жизненном цикле завершена транзакция фрагмента, так что я могу подождать, чтобы настроить мой пейджер?
, по-видимому, андроид 'ViewPager' будет способствовать' 'NullPointerException' внутри onCreateView' фрагмента внутри пейджера в' IllegalStateException: FragmentManager уже выполняется транзакции ... на всякий случай кто-то падает и должен знать – Lovis