Uso del menú Opciones en una actividad de fragmentos múltiples
-
27-10-2019 - |
Pregunta
tengo un FragmentActivity
que alberga un FragmentStatePagerAdapter
. El buscapersonas contiene múltiples instancias del mismo fragmento, para que el usuario pueda deslizar entre los elementos en una lista. Quiero poder proporcionar al usuario un menú de opciones que actuará solo en el elemento visible.
Por ejemplo, tengo una lista de imágenes que se muestran en ImageViews dentro de fragmentos. Quiero un elemento de menú de opción que permita al usuario establecer la imagen como su fondo de pantalla.
En el momento en que intento esto, cuando onPrepareOptionsMenu
se llama, el código se llama en múltiples fragmentos (generalmente el actual + siguiente). Lo mismo cuando se selecciona un elemento. Esto hace que la imagen incorrecta se establezca como fondo de pantalla.
¿Cómo puedo evitar que el menú de opciones se active por más que el fragmento visible actualmente?
Solución
Mi solución era usar el setOnPageChangeListener
método del ViewPager
para realizar un seguimiento de qué Fragment
El índice era actualmente visible con el onPageSelected
llamar de vuelta. Todavía tiene que obtener el índice inicial usted mismo, pero en mi caso esto fue trivial
Otros consejos
Puede interceptar la devolución de llamada del menú Opciones en la OnOptionsIntemed de la actividad seleccionada y llamar explícitamente el elemento del fragmento correcto allí, devolviendo verdadero para indicar que lo ha manejado.
El truco es cambiar Sethasoptions (verdadero | Falso) en cada fragmento antes de poblar el menú. Esto ya me ayudó