Tengo una actividad con ActionBar y navegación por pestañas. Estoy usando el modo dividido, por lo que las pestañas están en la parte superior y las acciones están en la barra inferior. ¿Cómo puedo cambiar dinámicamente las acciones de abajo? Necesito esto porque cada pestaña tiene diferentes acciones.¿Cómo puedo cambiar las acciones de la Barra de acciones dinámicamente?
Respuesta
Dado que las acciones se completan con el menú de opciones de la actividad, puede usar Activity#invalidateOptionsMenu()
. Esto arrojará el menú actual y llamará nuevamente a los métodos onCreateOptionsMenu
/onPrepareOptionsMenu
de su actividad para reconstruirlo.
Si está utilizando pestañas de la barra de acciones para cambiar la configuración de su fragmento, hay una mejor manera. Haga que cada fragmento administre su propia porción del menú. Estos fragmentos deben llamar al setHasOptionsMenu(true)
. Cuando se agregan o eliminan fragmentos que tienen elementos del menú de opciones, el sistema invalidará automáticamente el menú de opciones y llamará a los métodos de onCreateOptionsMenu
/onPrepareOptionsMenu
de cada fragmento además de los de la actividad. De esta forma, cada fragmento puede administrar sus propios elementos y no necesita preocuparse por realizar el cambio de menú a mano.
ActionMode.invalidate() hizo el truco. Hizo que se invoque nuevamente el onPrepareActionMode()
.
Activity#invalidateOptionsMenu()
hicieron no causa del onPrepareActionMode()
que se invoca cuando se utilizan elementos de la lista con selección múltiple.
¿cómo obtengo actionmode? Solo tengo ActionBar – eugene
El ActionMode es el primer parámetro en onPrepareActionMode (...): http: // goo.gl/tMyBx –
Nunca escuché de onPrepareAction –
Activity.invalidateOptionsMenu() requiere API de nivel 11. Hay una solución simple que es compatible con versiones anteriores:
Añadir MenuItem al menú al principio, pero establezca su visibilidad a falsa. Conjunto visibilidad a cierto cuando se desee, usando MenuItem.setVisible()
Gracias. Por si acaso ayuda a los demás ... Pon 'MenuItem refreshItem = menu.findItem (R.id.action_refresh); refreshItem.setVisible (false); 'en su' onCreateOptionsMenu' – AlvaroSantisteban
@AlvaroSantisteban o '" android: visible "=" false "' en xml –
Activity.invalidateOptionsMenu()
requiere API de nivel 11. El uso de la versión de la biblioteca de apoyo de la misma supportInvalidateOptionsMenu().
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.supportInvalidateOptionsMenu();
- 1. Cambiar iconos en la Barra de acciones dinámicamente
- 2. Cambiar el color de la barra de acciones en Android
- 3. Estilos contextuales de la barra de acciones
- 4. Android Honeycomb: cambiar el estilo de la barra de acciones
- 5. Vista personalizada de la barra de acciones
- 6. Barra de acciones de Sherlock cambiar el color del texto
- 7. Compatibilidad con la barra de acciones
- 8. ¿Puedo cambiar las reglas de validación requeridas para diferentes acciones?
- 9. Android cómo diseñar un SearchView en la barra de acciones?
- 10. Barra de acciones de Android (Barra de acciones de Sherlock): coloque la rueda de desplazamiento descendente completamente a la derecha
- 11. cómo cambiar la barra de herramientas de elemento de menú de barra de acciones cuando usa un tema personalizado para la barra de acciones?
- 12. Divisor de selección de la barra de acciones color
- 13. El menú de la barra de acciones muestra la pantalla
- 14. Barra de acciones o ActionBarSherlock - Suavemente Ocultar/Mostrar el Barra de acciones
- 15. Android: cambiar las acciones del botón Atrás
- 16. Android Tematización personalizado en la Barra de acciones/
- 17. Android: barra de acciones de Sherlock desplegable
- 18. Cómo cambiar las secuencias de acciones secundarias en MVC
- 19. ¿Barras de la barra de acciones sin usar fragmentos?
- 20. Ver barra de acciones en todas las actividades - Android
- 21. Tamaño del icono de barra de acciones
- 22. Android Sherlock Barra de acciones Hasta botón
- 23. Fragmentar transacciones, barra de acciones y backstack
- 24. Cómo agregar un elemento desplegable en la barra de acciones
- 25. Agregar barra de acciones en ListActivity
- 26. pestañas de la barra de acciones de Android
- 27. ActionBarSherlock - fondo personalizado de barra de acciones con divisor
- 28. Desbordamiento de la barra de acciones no se muestra
- 29. XPages extlib oneui layout - Cómo agregar acciones de barra de posición dinámicamente
- 30. Fondo del botón de la barra de acciones
Sólo una nota: setHasOptionsMenu() debe ser llamado en onCreate de acuerdo con el [Documentación] (http://developer.android.com/guide/topics/fundamentals/fragments.html#ActionBar). – Dave
Eso no es realmente un requisito. Se puede llamar desde allí y es un buen lugar para hacerlo en muchas circunstancias, pero si el fragmento ya se ha agregado y no está oculto, el menú de opciones de la actividad se invalidará y se reflejará el nuevo estado. – adamp
Estoy de acuerdo con usted, sin embargo, los documentos no lo hacen sonar así. "Sin embargo, para que este método reciba llamadas, debe llamar a setHasOptionsMenu() durante onCreate() ...". Creo que quieren decir que debes llamar a setHasOptionsMenu() pero sin querer lo hicieron sonar como si onCreate() también fuera un requisito. – Dave