2011-06-21 8 views
9

to dość łatwo wyłączyć element menu w XML:Android 3.0 Honeycomb: Jak włączyć/wyłączyć elementy menu na pasku akcji?

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

Jest to także dość łatwo zmienić go za pomocą kodu na < 3.0 aplikacji:

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

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

    return true; 
} 

Ale jak to zrobić na Androida 3.x? Chcę wyłączyć opcje menu w zależności od pokazanego fragmentu.

pozdrowienia rodzaju, meduzy

Odpowiedz

24

Prawie to samo, ale umieścić kod do fragmentu Zamiast pamiętać inny podpis metody.

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

Więc fragment bierze odpowiedzialność za pompowania menu itd

Edit Uwaga potrzeba zadzwonić setHasOptionsMenu(true)

+0

Dziękujemy! Nie zadziałało jednak, dopóki nie dodałem wywołania "setHasOptionsMenu (true)" w Fragmentie. – jellyfish

+0

Dla każdego, kto tu przyjdzie, musisz również zastąpić onCreateOptionsMenu w działaniu. Coś takiego: @Override public boolean onCreateOptionsMenu (menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate (R.menu.main, menu); return true; } – span

+0

Kopalnia działa bez nadpisywania w działaniu. – PJL

Powiązane problemy