8

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

ActionBar APIで便利なメソッドが見つかりませんでした。唯一の方法は、ActionBarでカスタムビューを使用することです。

4

2 に答える 2

20

ActionBarにメニュー項目を更新するように指示するには: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();
于 2012-09-14T06:29:29.300 に答える
0

別のオプション:メニューを保存するアクティビティにフィールドを設定します。このようにして、このアクティビティのどこからでもgetMenuInflater()。inflate()とmenu.clear()を呼び出すことができます。

したがって、次のようになります。

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();
    }
于 2015-07-29T19:45:54.697 に答える