item - ¿Cómo hacer una llamada condicional invalidateOptionsMenu() dependiendo del nivel de la API en Android?
oncreateoptionsmenu fragment (6)
Estoy intentando actualizar los botones de menú de mi aplicación cada vez que se presiona uno de ellos; en API 11+, necesita llamar a invalidateOptionsMenu()
para hacer esto; dado que quiero que mi aplicación sea compatible con API más bajas, ¿cómo solo llamo a este método cuando uso api 11+?
¿Has intentado utilizar FragmentActivity del Support Package en lugar de una actividad normal? Creo que la FramentActivity tendrá el método que necesita.
Creo que lo tengo ... la respuesta fue crear una nueva clase:
public class wrapThree {
public void invalidate(myActivity act) {
act.invalidateOptionsMenu();
}
}
y luego llama a ese método desde myActivity si la API es 11+
Al menos, esto no da errores en API <11 ... todavía tiene que probarlo en API 11+
No creo que haya ninguna necesidad de una biblioteca de compatibilidad y demás, solo haz un simple
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
invalidateOptionsMenu();
}
No es necesario que lo llame antes de honeycomb, ya que afaik, onPrepareOptionsMenu () se llama cuando se presiona el botón de menú. Esto funciona para mi.
Para los demás que están buscando una respuesta como yo:
Si está utilizando ActionBarSherlock e intenta actualizar los botones de la barra de acciones en API <11, en lugar de
Activity.invalidateOptionsMenu()
puedes usar
SherlockActivity.supportInvalidateOptionsMenu()
:
Si está extendiendo ActionBarActivity en su clase, solo necesita esto:
supportInvalidateOptionsMenu();
Utilizar
ActivityCompat.invalidateOptionsMenu(Activity activity)
de la biblioteca de compatibilidad .