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

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

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

Solutions Collecting From Web of "ActionBar中动作/菜单项的dynamic控制"

告诉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(); 

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