2012-09-14 12 views
9

ActionBarのメニュー項目を動的に無効化、非表示、追加/削除する方法はありますか?たとえば、ユーザーがアクティビティ内の有効な電話番号を入力するまで、アクションは無効になります。ActionBarのアクション/メニュー項目の動的コントロール

私はアクションバーAPIの任意の有用な方法を見つけることができませんでした、唯一の方法は、アクションバーのカスタムビューを使用しているようです。そのメニュー項目をリフレッシュするためにアクションバーを伝えるために

答えて

20

invalidateOptionsMenu()

そして/無効にメニュー項目を有効にする:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem item= menu.findItem(R.id.men_1); 
    //depending on your conditions, either enable/disable 
    item.setEnabled(false); 
    super.onPrepareOptionsMenu(menu); 
    return true; 
} 

を、あなたが持っているアクションバー非表示にする:

getActionBar().hide(); 
+1

'onPrepareOptionsMenu'は'返す必要があります。この方法で、それはgetMenuInflaterを呼び出すことが可能です()あなたは

だから、この活動にしたいどこからでも)((膨らませる)とmenu.clear、それは次のようになりますboolean'値の場合は、メニューを表示するためにはtrueを返さなければなりません。 falseを返すと表示されません。 –

+7

あなたは[ 'supportInvalidateOptionsMenu()']あなたが使用する必要がありますActionBarActivity'サポートライブラリと 'を使用している場合(http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html# supportInvalidateOptionsMenu%28%29) –

0

別のオプション:アクティビティにメニューを格納するフィールドがあります。 。

class MyActivity extends ActionBarActivity { 

    Menu actionBar; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     actionBar = menu; 
     return true; 
    } 

    //Possible usage 
    void showActionBar1() { 
     getMenuInflater().inflate(R.menu.menu_1, actionBar); 
     actionBar.findItem(R.id.menu_1_btn_1).setOnMenuItemClickListener(); 
    } 

    void showActionBar2() { 
     getMenuInflater().inflate(R.menu.menu_2, actionBar); 
     ... 
    } 

    void clearActionBar() { 
     if (actionBar != null) actionBar.clear(); 
    } 
関連する問題