AndroidAnnotations(以下AA)を使うとシンプルにオプションメニューを実装することができます。
- @OptionMenuでメニューのリソースを指定します。
- @OptionItemでイベントを受け取るメソッドを指定します。
サンプルコード
@EActivity
@OptionsMenu(R.menu.my_menu) // res/menu/my_menu.xmlを指定します
public class MyActivity extends Activity {
@OptionMenuItem // MenuItemのインスタンスを取得したい場合はこう書きます。利用しない場合は不必要です
MenuItem menuSearch;
@OptionsItem(R.id.menuShare)
void myMethod() {
// R.id.menuShareのメニューが選択されたときの処理を書きます。
}
@OptionsItem
void homeSelected() {
// リソースIDが指定されていない場合はメソッド名から判定されます(Selectedは無視されます)
// R.id.homeのメニューが選択された時に実行されます
}
@OptionsItem
boolean menuSearch() {
menuSearch.setVisible(false);
// R.id.menuSearchが選択された時に実行されます
// 返り値はvoidとbooleanを選択できます(falseの場合はmenuの処理を継続できます)
return true;
}
@OptionsItem({ R.id.menu_search, R.id.menu_delete })
void multipleMenuItems() {
// 複数のリソースIDを指定できます
}
@OptionsItem
void menu_add(MenuItem item) {
// パラメータにMenuItemを指定し利用することもできます
// itemにはR.id.menu_addのMenuItemが入ります
}
}
フラグメントでも利用することができます
@EFragment
@OptionsMenu(R.menu.my_fragment_menu)
public class MyFragment extends Fragment {
@OptionsItem
void menuRefreshSelected() {
}
}
参考