ActionBar中动作/菜单项的动态控制

时间:2012-09-14 06:24:20

标签: android android-actionbar

有没有办法在ActionBar中动态禁用,隐藏,添加/删除菜单项?例如,在用户填写活动中的有效电话号码之前,操作将被禁用。

我没有在ActionBar API中找到任何有用的方法,唯一的方法似乎是在ActionBar中使用自定义视图。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

另一种选择:在存储菜单的Activity中有一个字段。这样就可以在此活动中的任何地方调用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();
    }