私のアプリケーションには、リストの各項目にチェックボックスが含まれているListFragmentがあります。ユーザーがこれらのチェックボックスの1つをクリックするたびに、アプリはActionModeコンテキストメニューを開始します。しかし、別のコンポーネントをクリックしたときに、アプリケーションでActionModeメニューを閉じてほしい。私はFragment#closeContextMenu()
成功せずに試しました。
どうすればそれを達成できますか?
私のアプリケーションには、リストの各項目にチェックボックスが含まれているListFragmentがあります。ユーザーがこれらのチェックボックスの1つをクリックするたびに、アプリはActionModeコンテキストメニューを開始します。しかし、別のコンポーネントをクリックしたときに、アプリケーションでActionModeメニューを閉じてほしい。私はFragment#closeContextMenu()
成功せずに試しました。
どうすればそれを達成できますか?
ActionModeを作成/開始するときはいつでも作成者
mMode = startActionMode(....);
却下するには、次の構文を使用します
if (mMode != null)
{
mMode.finish();
}
Kotlinコード
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)
actionMode.finish();
終了メソッドがアクションモードから呼び出されると...アクションモードが破棄されます。
@Override
public void onDestroyActionMode(ActionMode mode) {
//When action mode destroyed remove selected selections and set action mode to null
}
そしてdestroyメソッドはコールバックイベントから呼び出されます