2011-06-21 16 views
9

それはXMLでメニュー項目を無効にするには非常に簡単です:Android 3.0 Honeycomb:アクションバーのメニュー項目を有効/無効にする方法は?

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

それは< 3.0アプリ上でコードを経由して、それを変更することも非常に簡単です:

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

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

    return true; 
} 

しかし、私はAndroid上でそれを行うだろうか3.x? フラグメントに応じてメニューオプションを無効にしたいとします。

敬具、 クラゲ

答えて

24

ほとんど同じですが、異なるメソッドシグネチャを注意し、代わりの断片にコードを置きます。

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

だから、フラグメントはなどのメニューを膨張させるための責任を取る

編集setHasOptionsMenu(true)

+0

を呼び出す必要性を注意してくださいありがとうございます!しかし、私がFragmentの "setHasOptionsMenu(true)"呼び出しを追加するまでは動作しませんでした。 – jellyfish

+0

ここに来る人は、アクティビティのonCreateOptionsMenuをオーバーライドする必要があります。このようなもの:@Override public boolean onCreateOptionsMenu(メニューメニュー) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main、menu); trueを返します。 } – span

+0

マインはアクティビティでオーバーライドしないで動作します。 – PJL

関連する問題