在我的应用程序中有一个 ListFragment,其中列表中的每个项目都包含一个复选框。每当用户单击其中一个复选框时,应用程序就会启动一个 ActionMode 上下文菜单。但我希望应用程序在单击另一个组件时关闭 ActionMode 菜单。我试过Fragment#closeContextMenu()
没有成功。
任何想法我怎么能做到这一点?
在我的应用程序中有一个 ListFragment,其中列表中的每个项目都包含一个复选框。每当用户单击其中一个复选框时,应用程序就会启动一个 ActionMode 上下文菜单。但我希望应用程序在单击另一个组件时关闭 ActionMode 菜单。我试过Fragment#closeContextMenu()
没有成功。
任何想法我怎么能做到这一点?
每当您创建/启动 ActionMode 时
mMode = startActionMode(....);
要关闭它,请使用以下语法
if (mMode != null)
{
mMode.finish();
}
actionMode.finish();
当从动作模式调用完成方法时......它将破坏动作模式。
@Override
public void onDestroyActionMode(ActionMode mode) {
//When action mode destroyed remove selected selections and set action mode to null
}
并且从回调事件调用destroy方法
科特林代码
按下菜单项后使用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)