How to close an ActionMode menu programmatically on Honeycomb?
Вопрос
In my application there is a ListFragment where each item from the list contains a checkbox. Whenever the user clicks on one of those checkboxes the app starts an ActionMode context menu.
But I want the application to close the ActionMode menu when clicking on another component.
I tried Fragment#closeContextMenu()
without success.
Any ideas how can I accomplish that?
Решение
Whenever you are creating/starting ActionMode Create by
mMode = startActionMode(....);
To Dismiss it use following Syntax
if (mMode != null)
{
mMode.finish();
}
Другие советы
Kotlin code
Use ActionMode.Callback to finish ActionMode
after menu item pressed
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)
actionMode.finish();
When finish method is called from actionmode ...it will destroy the action mode.
@Override
public void onDestroyActionMode(ActionMode mode) {
//When action mode destroyed remove selected selections and set action mode to null
}
and destroy method is called from callback event
Не связан с StackOverflow