LoginSignup
2
3

More than 5 years have passed since last update.

actionLayout を使ったらボタンが反応しなくなった

Posted at

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);
}
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3