2011-06-21 23 views
9

que es bastante fácil de desactivar un elemento de menú en XML:Android 3.0 Honeycomb: ¿Cómo habilitar/deshabilitar elementos de menú en la barra de acciones?

<item android:id="@+id/men_1" 
    android:title="@string/men_1" 
    android:showAsAction="ifRoom|withText" 
    android:icon="@drawable/ic_menu_1" 
    android:enabled="false"/> 

También es bastante fácil de cambiarlo a través de código en una aplicación < 3.0:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) 
{ 
    super.onPrepareOptionsMenu(menu); 

    MenuItem item = menu.findItem(R.id.men_1); 
    item.setEnabled(false); 

    return true; 
} 

Pero, ¿cómo lo haría en Android 3.x? Quiero deshabilitar las opciones del menú dependiendo del Fragmento que se muestra.

Saludos cordiales, medusas

Respuesta

24

Más o menos lo mismo, pero el código puesto en el fragmento en su lugar, tenga en cuenta diferentes firma del método.

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    MenuItem item= menu.findItem(R.id.men_1); 
    item.setEnabled(false); 
    super.onPrepareOptionsMenu(menu); 
} 

Así que el fragmento asume la responsabilidad para inflar el menú, etc.

Editar nota la necesidad de llamar setHasOptionsMenu(true)

+0

Gracias! No funcionó, sin embargo, hasta que agregué una llamada a "setHasOptionsMenu (true)" en el Fragmento. – jellyfish

+0

Para cualquier otra persona que venga a buscar, también debe sobrescribir OnCreateOptionsMenu en la actividad. Algo como esto: @Override public boolean onCreateOptionsMenu (menú del menú) { MenuInflater inflater = getMenuInflater(); inflater.inflate (R.menu.main, menú); return true; } – span

+0

La mina funciona sin anulación en la actividad. – PJL

Cuestiones relacionadas