要するに、ここに私の質問があります:
オプション メニュー (アクションバーに表示) を Android 3.0+ でプログラムで変更できますか?
ViewFlipper を使用してビューまたはステップを切り替えるウィザード スタイルのアクティビティがあります。
手順は、1 (何もない) -> 2 (メニュー) -> 3 (何もない) です。
2 番目の画面 (2) のみにメニュー項目があり、他の画面にはメニュー項目がないため、アクティビティが表示されているときにメニューを非表示/削除し、アクションの後に表示/追加する必要があります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.mMenu = menu;
getMenuInflater().inflate(R.menu.my_menu, menu);
mMenu.getItem(0).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
2番目の画面に切り替えます ->
public void showNext(View v) {
if (mVFlipper.getDisplayedChild() < (mVFlipper.getChildCount() - 1)) {
mVFlipper.showNext();
if (mVFlipper.getDisplayedChild() == 1) {
setTitle("Second screen");
mMenu.getItem(0).setVisible(true);
}
}
}
これは 2.2 では問題なく動作しますが、4.1 では惨めに失敗します。表示されている MenuItem から始めて、それを非表示にし、後で表示することができます。非表示のメニュー項目から始めて、後で表示しても機能しません。
私の主な問題は、onCreateOptionsMenu の実行が終了した後、MenuItem が非表示になるという事実のようです。このメソッドで MenuItem を表示したままにすることもできますが、それを非表示にするためのコールバックが他にありません。