有沒有辦法在ActionBar中動態禁用,隱藏,添加/刪除菜單項?例如,在用戶填寫活動中的有效電話號碼之前,操作將被禁用。ActionBar中動作/菜單項的動態控制
我沒有在ActionBar API中找到任何有用的方法,唯一的方法似乎是在ActionBar中使用自定義視圖。
有沒有辦法在ActionBar中動態禁用,隱藏,添加/刪除菜單項?例如,在用戶填寫活動中的有效電話號碼之前,操作將被禁用。ActionBar中動作/菜單項的動態控制
我沒有在ActionBar API中找到任何有用的方法,唯一的方法似乎是在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()膨脹()和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();
}
'onPrepareOptionsMenu'必須返回'布爾值「,您必須返回true才能顯示菜單;如果您返回false,則不會顯示。 –
如果您使用支持庫和'ActionBarActivity',則需要使用['supportInvalidateOptionsMenu()'](http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html# supportInvalidateOptionsMenu%28%29) –