/var/log/messages

Aug 27, 2014 - 1 minute read - Comments - android

ActionBar にボタンを置く

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 が表示されている時限定、ってことでギリギリセイフ、って思っているのですが、駄目かなぁ (ぇ

Android 勉強会 文法書

comments powered by Disqus