Tengo curiosidad por saber cómo (si hay) onPrepareOptionsMenu(Menu)
(y por extensión, onPreparePanel(int, View, Menu)
) se usa en Android 3.0+ cuando se dirige a API 11 o superior.Uso de `onPrepareOptionsMenu()` en Android 3.0+
Mi pensamiento es el siguiente:
Un Activity
's ActionBar
recibe su contenido de onCreateOptionsMenu(Menu)
donde puede inflar un recurso de menú XML, añadir elementos directamente, o alguna combinación de ambos. Cualquier fragmento de la actividad también recibirá esta llamada y tendrá la opción de hacer lo mismo.
Para actualizar los elementos en la barra de acciones, puede retener la instancia Menu
o llamar al invalidateOptionsMenu()
, que terminará llamando al onCreateOptionsMenu(Menu)
nuevamente.
Por lo tanto, ¿está onPrepareOptionsMenu(Menu)
solo en ese momento para admitir aplicaciones heredadas que no se dirigen a API 11 o posterior?
¿Llamar a getActionBar().hide()
y getActionBar().show()
activa una llamada al onPrepareOptionsMenu(Menu)
quizás?
¿La adición o eliminación de un fragmento de alguna manera activa esto?
En realidad estoy teniendo un comportamiento diferente. Probando tanto en 3.2 como en 4.1.1, después de llamar a 'invalidateOptionsMenu()', recibo una llamada a 'onCreateOptionsMenu()' y luego a 'onPrepareOptionsMenu()'. No creo que necesariamente se llamen entre sí, pero ese es el orden en el que están llegando. Debido a esto, guardo todos mis cambios de tiempo de ejecución en 'onPrepareOptionsMenu()', y en 'onCreateOptionsMenu()' Solo inflico el menú. En pre-3.0 esto se maneja a sí mismo cuando los usuarios abren el menú, y en> 3.0 simplemente llamo a 'invalidateOptionsMenu' cuando necesito actualizar la barra de acciones. –