Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
Tengo una Activity
simple que contiene un ViewPager
. Estoy tratando de agregar algunos elementos de menú al menú de uno de mis Fragment
s, sin embargo, estoy recibiendo un comportamiento extraño. Llamada: setHasOptionsMenu(true);
De mi fragmento da como resultado el método onCreateOptionsMenu()
la Actividad de onCreateOptionsMenu()
que se llama cada vez que cambio fragmentos en ViewPager
. ¿Esto es normal?
- Android: agrega la vista al diseño haciendo que el diseño esté delante de ActionBar
- Cómo borrar la vista creada dinámicamente de la memoria?
- ¿Cómo puedo forzar un sitio a escala para fijar para móviles (Iphone android ..)
- ¿Cómo puedo ver que View se vuelve visible
- Android habilita el botón Atrás en la vista web
- Cómo reproducir video en VideoView dentro de ViewPager desde el servidor
- Ver los valores devueltos getHeight () y getWidth () demasiado grandes
- Cómo establecer el atributo de primer plano en otra vista no FrameLayout
- SYSTEM_UI_FLAG_LOW_PROFILE no se puede resolver o no es un campo para google threadsample
- SurfaceView en ScrollView en 4.1
- Android: ExpandableListView indicador de grupo dibujable que es grande cuando uso mi propio icono
- Lista extensible de Multichild android
- Reemplazar fragmento dentro de un ViewPager
Es absolutamente "normal". Es posible que no encaje con su caso de uso en particular, pero es definitivamente un comportamiento intencionado.
Echa un vistazo a la fuente de android.support.v4.app.Fragment.setHasOptionsMenu ():
public void setHasOptionsMenu(boolean hasMenu) { if (mHasMenu != hasMenu) { mHasMenu = hasMenu; if (isAdded() && !isHidden()) { mActivity.supportInvalidateOptionsMenu(); } } }
Usted puede ver que llama a supportInvalidateOptionsMenu()
en su actividad, lo que finalmente lleva a onCreateOptionsMenu()
ser llamado en la actividad y todos sus fragmentos. Es cómo el marco administra la actualización del menú de opciones cuando se agrega o quita un fragmento del gestor de fragmentos de una actividad.
- ¿Cómo puedo ampliar automáticamente la ubicación actual en el mapa de Google api para Android?
- Java.lang.RuntimeException: Error al invocar public com.example.syncapp.MessageBase () sin args