¿Cómo puedo cambiar las acciones de Action Bar de forma dinámica?

Tengo una Actividad con ActionBar y navegación por tabs. Estoy usando el modo dividido, por lo que las tabs 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.

Dado que las acciones están pobladas por el menú de opciones de la actividad, puede usar Activity#invalidateOptionsMenu() . Esto volcará el menú actual y llamará a los métodos onCreateOptionsMenu / onPrepareOptionsMenu su actividad nuevamente para reconstruirlo.

Si usa tabs 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 deberían llamar a 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 onCreateOptionsMenu / onPrepareOptionsMenu 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.

Activity.invalidateOptionsMenu () requiere API Nivel 11. Hay una solución más simple que es compatible con versiones anteriores:

Agregue MenuItem al menú inicialmente pero establezca su visibilidad en falso . Establezca la visibilidad en verdadero cuando lo desee, utilizando MenuItem.setVisible ()

ActionMode.invalidate () hizo el truco. Provocó el onPrepareActionMode() para ser invocado de nuevo.

Activity#invalidateOptionsMenu() no provocó que se onPrepareActionMode() cuando se usan elementos de la lista con selección múltiple.

Activity.invalidateOptionsMenu() requiere API Nivel 11. Utilice la versión de la biblioteca de soporte de supportInvalidateOptionsMenu () .

 AppCompatActivity activity = (AppCompatActivity) getActivity(); activity.supportInvalidateOptionsMenu();