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?
- ExpandableListView - la indicación de grupo es extensible para ajustarse al tamaño del texto
- ¿Por qué onTouchEvent de SurfaceView llamado unos segundos retrasados?
- Cómo establecer el atributo de primer plano en otra vista no FrameLayout
- Los métodos getTop (), getLeft (), getX (), getY (), getWidth (), getHeight () de la vista de Android
- ¿Cómo hacer una pausa de la rotación de la lona durante 2 segundos en ángulos específicos?
- ¿Cómo puedo obtener el tamaño del lienzo de una vista personalizada fuera del método onDraw?
- Cómo agregar vistas dentro de una vista personalizada?
- Vista web de Android en la mitad de la pantalla
- android setAlpha lento
- Vista superficial en capas en un FrameLayout en Android
- Android deslizar la tarjeta con una pizca para ampliar la vista de la imagen con SwipeFlingAdapterView biblioteca
- Cómo obtener un elemento de un niño en ExpandableListView?
- Android, Vista lista expandible no tiene reacción al clic !!! No se expande
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