在我的應用程序中有一個ListFragment,其中列表中的每個項目都包含一個複選框。只要用戶點擊其中一個複選框,應用程序就會啓動一個ActionMode上下文菜單。 但我希望應用程序在單擊另一個組件時關閉ActionMode菜單。 我試過Fragment#closeContextMenu()
沒有成功。如何在Honeycomb上以編程方式關閉ActionMode菜單?
任何想法我怎麼能做到這一點?
在我的應用程序中有一個ListFragment,其中列表中的每個項目都包含一個複選框。只要用戶點擊其中一個複選框,應用程序就會啓動一個ActionMode上下文菜單。 但我希望應用程序在單擊另一個組件時關閉ActionMode菜單。 我試過Fragment#closeContextMenu()
沒有成功。如何在Honeycomb上以編程方式關閉ActionMode菜單?
任何想法我怎麼能做到這一點?
當你正在創建/開始ActionMode通過
mMode = startActionMode(....);
創建駁回它使用以下語法
if (mMode != null)
{
mMode.finish();
}
科特林代碼
使用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)
我覺得我太累了,我甚至沒有穿過我的腦海裏。謝謝你Vipul! – kaneda
這個問題沒有更多的「本地」方法嗎?沒有創建成員的東西? –
注意:有些東西讓我--Mode需要成爲活動的類字段(如命名所示),因爲您無法聲明它並在相同的回調中使用它。 – Chris