OptionsMenu de Fragmentos anidados dentro de ViewPager
Estoy utilizando ActionBarSherlock y estoy tratando de implementar una estructura de fragmentos anidados con un viewpager.
Tengo una actividad que contiene algunas vistas y un fragmento de envoltura (FragmentA)
- No se puede instanciar fragmento - java.lang.RuntimeException
- GetActivity () es nulo dentro de AlertDialog de un fragmento
- Android Google Maps en Fragmento
- Fragmento con múltiples backstack
- Comprobar fragmento se presenta en framelayout o no en android?
Este FragmentA contiene un paginador de vista que muestra FragmentA.1, FragmentA.2, FragmentA.3.
De forma predeterminada, los eventos onCreateOptionsMenu no se envían a fragmentos secundarios como se describe aquí . Así que estoy utilizando esta solución para superar el problema.
Funciona muy bien sobre el nivel 17 de API, pero por debajo no muestra el menú de opciones para el primer fragmento, pero cuando me desplazo a otros todo empieza a funcionar bien. He intentado llamar onCreateOptionsMenu del fragmento del padre pero ningún resultado. También funciona cuando vuelvo al primer fragmento.
¿Alguna sugerencia?
Actualización:
Manera más clara de expresar la estructura:
Por fragmento de envoltura, me refiero al fragmento que contiene el viewpager. Así que la estructura es
ACTIVITY -> WRAPPER FRAGMENT (holds viewpager and passes childfragmentmanager to adapter(FragmentPagerAdapter) as fragmentmanager) (parent is activity) -> CHILDFRAGMENTS(items of viewpager) (parent is wrapper fragment but viewpager manages its framelayout)
También he encontrado una solución de temp que no es tan agradable:
if(Build.VERSION.SDK_INT > 17){ pager.setCurrentItem(1,false); } else { new android.os.Handler().postDelayed(new Runnable() { @Override public void run() { pager.setCurrentItem(1, true); } }, 300); }
- Android - instanciar un fragmento varias veces?
- Utilizar la misma clase de Fragmento dos veces en diferentes contenedores
- Barra de Acción Sherlock SearchView no se expande al hacer clic
- Comprobar si existe un fragmento y reutilizarlo
- Cómo saber cuando Fragmento se vuelve invisible
- La fila de RecyclerView está barajando y cambiando Imágenes: android
- Cuándo utilizar los métodos attach and detach de FragmentTransaction
- Fragmento dinámico de Android Google Maps en el soporte de RecyclerView
Probablemente inicialice su buscapersonas de vista antes del final de la creación de la actividad.
Este es el problema porque los fragmentos secundarios crean su menú de opciones pero luego, la actividad invalida todas las opciones del menú.
Debe inicializar su buscapersonas dentro del método onActivityCreated
del fragmento de contenedor.
Editar
if(viewPagerAdapter.getItem(view_pager.getCurrentItem()) instanceof FragmentToFind) { FragmentToFind fragment = (FragmentToFind) viewPagerAdapter.getItem(view_pager.getCurrentItem()); fragment.onCreateOptionsMenu(menu, inflater); }
- Dibujo de lienzo SurfaceView de Android con un hilo
- Android – Problemas con elementos de menú verificables