Menuのmenu itemまたはActionBarのaction itemをコードで動的に制御する
1740 ワード
本文には3つの方法がある.
方法1. invalidateOptionsMenu()関数
フレームワークを強制してpublic boolean onCreateOptionsMenu(Menu menu)を再呼び出すことができます. ActionBarのitemまたはmenuのitemを生成
ここでは状態によって各itemの状態を変えることができる.
次のようになります.
注意:
invalidateOptionsMenu()この方法はAPI 11以上でしか使えませんが、
しかし、V 4パッケージのFragmentActivityでは、同様の方法が提供されています.
メソッド2.onPrepareOptionsMenu関数
通常、menuキーFramewrokを押すたびにonPrepareOptionsMenu()が呼び出され、表示するメニューが用意されます.
注意:この方法はmenuボタンを押さなければならない.押さないとonPrepareOptionsMenuにならない.この点に注意しなければならない.
方法3:invalidateOptionsMenu
方法1. invalidateOptionsMenu()関数
フレームワークを強制してpublic boolean onCreateOptionsMenu(Menu menu)を再呼び出すことができます. ActionBarのitemまたはmenuのitemを生成
ここでは状態によって各itemの状態を変えることができる.
次のようになります.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
if(... )// if (mode == MODE.TAB ) {//mode MODE.TAB
int ct = menu.size();
for (int i = 0; i < ct; i++) {
MenuItem mi = menu.getItem(i);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
}
return true;
}
注意:
invalidateOptionsMenu()この方法はAPI 11以上でしか使えませんが、
しかし、V 4パッケージのFragmentActivityでは、同様の方法が提供されています.
メソッド2.onPrepareOptionsMenu関数
通常、menuキーFramewrokを押すたびにonPrepareOptionsMenu()が呼び出され、表示するメニューが用意されます.
注意:この方法はmenuボタンを押さなければならない.押さないとonPrepareOptionsMenuにならない.この点に注意しなければならない.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
if (mode == MODE.TAB ) {
int ct = menu.size();
for (int i = 0; i < ct; i++) {
MenuItem mi = menu.getItem(i);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
preventMenuKey(true);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
方法3:invalidateOptionsMenu
mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);