fly1tkg blog

Options Menuをハンドリングする – AndroidAnnotations -

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

}

参考