Подтвердить что ты не робот

Как программно закрыть меню ActionMode на Honeycomb?

В моем приложении есть ListFragment, где каждый элемент из списка содержит флажок. Всякий раз, когда пользователь нажимает на один из этих флажков, приложение запускает контекстное меню ActionMode. Но я хочу, чтобы приложение закрыло меню ActionMode при нажатии на другой компонент. Я пробовал Fragment#closeContextMenu() без успеха.

Любые идеи, как я могу это сделать?

4b9b3361

Ответ 1

Всякий раз, когда вы создаете/запускаете ActionMode Create с помощью

mMode = startActionMode(....);

Чтобы убрать его, используйте следующий синтаксис

if (mMode != null) 
 {
     mMode.finish();
 }

Ответ 2

Код Котлина

Используйте ActionMode.Callback для завершения ActionMode после нажатия пункта меню

 private val actionModeCallbacks = object : ActionMode.Callback {
    override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
        mode.menuInflater.inflate(R.menu.menu_action_mode, menu)
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
        return false
    }

    override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.menu_item -> {
                mode.finish() // after click of menu item close action mode
                return true
            }
        }
        return false
    }

    override fun onDestroyActionMode(mode: ActionMode) {


    }
}

startSupportActionMode

(activity as AppCompatActivity).startSupportActionMode(actionModeCallbacks)