ActionBarのメニュー項目を動的に無効化、非表示、追加/削除する方法はありますか?たとえば、ユーザーがアクティビティに有効な電話番号を入力するまで、アクションは無効になります。
ActionBar APIで便利なメソッドが見つかりませんでした。唯一の方法は、ActionBarでカスタムビューを使用することです。
ActionBarのメニュー項目を動的に無効化、非表示、追加/削除する方法はありますか?たとえば、ユーザーがアクティビティに有効な電話番号を入力するまで、アクションは無効になります。
ActionBar APIで便利なメソッドが見つかりませんでした。唯一の方法は、ActionBarでカスタムビューを使用することです。
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();
}