FragmentManager ya está ejecutando transacciones después de usar el método setOffscreenPageLimit ()
Tengo un cajón de navegación con un número de fragmentos y uno de ellos es un tablayout con dos fragmentos de reciclerview, los elementos de RecyclerView desaparecen después de cambiar entre fragmentos de cajón de navegación, encontré una solución que necesito usar el método setOffscreenPageLimit () con ViewPager pero Me da el error que se menciona en el título de la pregunta
Aqui esta mi logcat
- Configuración de RadioButton.setChecked con varios fragmentos
- Establecer currentItem de un viewPager de un fragmento
- Error con ViewPager y RecyclerView
- ActionBarSherlock + Tabbed Fragments + ViewPager insider un fragmento
- ViewPager retaing old Fragmentos en la rotación de la pantalla
java.lang.IllegalStateException: FragmentManager is already executing transactions at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1626) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.populate(ViewPager.java:1240) at android.support.v4.view.ViewPager.populate(ViewPager.java:1088) at android.support.v4.view.ViewPager.setOffscreenPageLimit(ViewPager.java:852) at com.amir.ahmed.EELUStudentUnion.SelectionFragment.setupViewPager(SelectionFragment.java:59) at com.amir.ahmed.EELUStudentUnion.SelectionFragment.onActivityCreated(SelectionFragment.java:40) at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2089) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1133) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7225) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Que es el código del fragmento de disposición de tabulación
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); viewPager = (ViewPager) getActivity().findViewById(R.id.viewpager); setupViewPager(viewPager); viewPager.setOffscreenPageLimit(2); tabLayout = (TabLayout) getActivity().findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); setupTabIcons(); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); adapter.addFrag(new Courses(), "IT"); adapter.addFrag(new CoursesBussiness(), "Business"); viewPager.setAdapter(adapter); }
- SetOnPageChangeListener no llama aPageSelected
- ViewPager onClickListener hace referencia a la vista errónea en android
- No se puede cambiar la etiqueta del fragmento
- Cómo personalizar el CirclePageIndicator?
- Indicar después de pasar la última página en ViewPager
- ¿Cuál es la mejor manera de hacer imágenes deslizantes en cardview dentro de reciclador?
- ¿Cómo obtengo el niño Vista de un ViewPager en un elemento determinado
- Cómo utilizar el fragmento con Viewpager para páginas de desplazamiento
Me encontré con el problema similar como usted, después de varias horas de investigación, encontré el problema. Si su ViewPager se crea dentro del fragmento, debe utilizar getChildFragmentManager () para FragmentPagerAdapter, en lugar de getFragmentManager ().
Así que su método setupViewPager () debería tener este aspecto.
private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); adapter.addFrag(new Courses(), "IT"); adapter.addFrag(new CoursesBussiness(), "Business"); viewPager.setAdapter(adapter); }
La causa raíz del problema es que incrustaste Fragmentos dentro del Fragmento, por eso lanzará la excepción.
java.lang.IllegalStateException: FragmentManager is already executing transactions
De acuerdo con los documentos de Google:
Ahora puede incrustar fragmentos dentro de fragmentos. Esto es útil para una variedad de situaciones en las que se desea ubicar componentes de interfaz de usuario dinámicos y reutilizables en un componente de interfaz de usuario que sea dinámico y reutilizable. Por ejemplo, si utiliza ViewPager para crear fragmentos que pasan a la izquierda y la derecha y consumen la mayoría del espacio de la pantalla, ahora puede insertar fragmentos en cada página de fragmentos. Para anidar un fragmento, simplemente llame a getChildFragmentManager () en el fragmento en el que desea agregar un fragmento. Esto devuelve un FragmentManager que puede utilizar como lo hace normalmente desde la actividad de nivel superior para crear transacciones de fragmentos.
- SpannableString no funciona cuando se utiliza el tema de AppCompat
- Al construir el proyecto de android con el comando de la depuración de la hormiga, mi apk tiene la palabra depuración atada al nombre. ¿Cómo lo cambio?