[Android] MenuItem の onClick ハンドラの記述方法

Android の Menu リソースの Layout ビューを見ると、「On click」という項目があり、メニュー項目をクリックした時のハンドラを指定できるようになっています。

そこで、Acitvity に配置する View と同じように、ハンドラとなるメソッド名を入力して、Activity 内にメソッドを記述すればいいのかと思いきや、MenuItem を選択した際の onClick ハンドラは、View の onClick ハンドラとは違った記述になるんですね。

通常、View の onClick ハンドラは以下のように書きます:

public boolean onFooCliked(View view) {
  ...
}

ところが、MenuItem の onClick ハンドラで上記のように記述しても、Android 側で認識してくれず、実行しようとすると下記のような例外が発生します:

FATAL EXCEPTION: main android.view.InflateException: Couldn't resolve menu item onClick handler in class ...

MenuItem の onClick ハンドラは、以下のように記述します:

public boolean onFooClicked(MenuItem item) {
  ...
}

ただ、MenuItem 選択時の処理は、onOptionsItemSelected() メソッドの中に記述するのが真っ当なやり方の気もします…


Pocket
Bookmark this on Yahoo Bookmark

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>