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() { } }
参考