Action Bar の アイコンを icon = “” ではなく actionLayout で読み込むようにしたらボタンが反応しなくなりました。
イベントリスナーのセットの仕方を変える必要があるとわかったので内容をメモします。
onOptionItemSelected() 内にボタンが押された際の処理を switch 文で次のように書いていました。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.foo:
finish();
return true;
case R.id.bar:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
しかし、ボタンに actionLayout を使うように変更を加えたところ処理が実行されなくなりました。
stackoverflow の記事 によると actionLayout を使う場合には onCreateOptionsMenu() でボタンにリスナーをセットするのがいいようです。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.hoge, menu);
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getItem(i);
if (item.getItemId() == R.id.fuga) {
itemChooser = item.getActionView();
if (itemChooser != null) {
itemChooser.setOnClickListener(this);
}
}
}
return super.onCreateOptionsMenu(menu);
}