NavigationDrawer にて表示する Fragment を切り替えてます。その中の一つだけ、ActionBar にゴミ箱ボタンを表示したい。あるいはゴミ箱 (ic_action_discard) と終了 (ic_action_accept) の切り替えをしたい、ということで自分メモを以下に。
まず表示の方からなんですが、ボタンを表示するためのレイアウトを res/menu 配下に作成します。以下なカンジ?
{% gist 6e9a6a6ca45fb40be9e6 %}
で、Activity 側で以下な変数持っておいて (かなり反則気味ですが
public static int mMenuType = 0;
public static final int MENU_TYPE_NORMAL = 0;
public static final int MENU_TYPE_EDIT = 1;
public static final int MENU_TYPE_END = 2;
onCreateOptionsMenu メソドで切り分けます。
{% gist f4f96140455783522aee %}
ちなみに res/menu/my.xml と res/menu/end.xml ってのを作ってます。あとは Fragment 側で onResume メソドに以下な命令を追加しています。以下はボタン出さないケイスです。
MyActivity.mMenuType = MyActivity.MENU_TYPE_NORMAL;
getFragmentManager().invalidateOptionsMenu();
以下は表示するケイスです。
MyActivity.mMenuType = MyActivity.MENU_TYPE_EDIT;
getFragmentManager().invalidateOptionsMenu();
実際にタップされた時にどうするか、なんですがその callback は Activity 側で記述する形になってます。onOptionsItemSelected メソドです。id で判断して以下なカンジで無理矢理呼び出しちゃってます。
{% gist 51bcb345752eb4544816 %}
その id が押されるのは上で言う ListFragment が表示されている時限定、ってことでギリギリセイフ、って思っているのですが、駄目かなぁ (ぇ