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?

¿Fue útil?

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ó

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top