Question

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?

Was it helpful?

Solution

Whenever you are creating/starting ActionMode Create by

mMode = startActionMode(....);

To Dismiss it use following Syntax

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top