40

在我的应用程序中有一个 ListFragment,其中列表中的每个项目都包含一个复选框。每当用户单击其中一个复选框时,应用程序就会启动一个 ActionMode 上下文菜单。但我希望应用程序在单击另一个组件时关闭 ActionMode 菜单。我试过Fragment#closeContextMenu()没有成功。

任何想法我怎么能做到这一点?

4

3 回答 3

91

每当您创建/启动 ActionMode 时

mMode = startActionMode(....);

要关闭它,请使用以下语法

if (mMode != null) 
 {
     mMode.finish();
 }
于 2012-06-22T15:18:37.187 回答
1
actionMode.finish();

当从动作模式调用完成方法时......它将破坏动作模式。

@Override
public void onDestroyActionMode(ActionMode mode) {

    //When action mode destroyed remove selected selections and set action mode to null


}

并且从回调事件调用destroy方法

于 2020-01-22T12:19:49.283 回答
1

科特林代码

按下菜单项后使用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) {


    }
}

启动支持动作模式

(activity as AppCompatActivity).startSupportActionMode(actionModeCallbacks)
于 2018-01-11T06:01:53.603 回答