0. 環境

[Windows] 7
[Java] 1.8
[Android] 5.1.1
[Android API] 26

1. 問題

  • build.gradleで下記の値を上げたところ、onPrepareActionModeが実行されなくなってました。

    onPrepareActionModeは、ListViewのロングタップ時にアクションモードへ切り替えた後、アクションバー内のあるアイコンを隠す処理で使っていたので、困りました。

    • compileSdkVersion : 21 → 26

    • buildToolsVersion : 21.1.2 → 26.0.2

2. 対策

  • 試しに下記 (A) にあった処理を (B) へ移してみたところ、思った通りの動きをしてくれました。

    うーん、前はダメだったからonPrepareActionModeを使ったんだけどなあ。。

    他にネットで情報を見つけられなかったので、一旦これにしておくか。

    list1 = findViewById(R.id.listView1);
    
    list1.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
    
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            //(A)
            //MenuItem menuItem1 = menu.findItem(R.id.menu_item1);
            //menuItem1.setVisible(false);
            return false;
        }
    
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.menu_action_mode, menu);
    
            //(B)
            MenuItem menuItem1 = menu.findItem(R.id.menu_item1);
            menuItem1.setVisible(false);
    
            return true;
        }