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: poner una imagen sobre otra imagen
- SurfaceView en ScrollView en 4.1
- Android: obtener Viewgroup de la vista?
- ¿Cómo puedo pasar Touch Listeners a la vista personalizada para arrastrar y soltar?
- ¿Dónde desasignar correctamente el mapa de bits en Android View?
- Tabla de Donuts Android
- Obtener el valor del atributo Hint de AttributeSet
- Custom ExpandableListview Android
- Android WebView no sólo de vídeo audio
- Android - no puede capturar el espacio atrás / borrar la prensa en suave. teclado
- El teclado de software redimensiona la imagen de fondo en Android
- Cómo usar una misma fontface personalizada para toda la vista en android?
- Id de vista siguiente como un atributo personalizado en android
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