40

私のアプリケーションには、リストの各項目にチェックボックスが含まれているListFragmentがあります。ユーザーがこれらのチェックボックスの1つをクリックするたびに、アプリはActionModeコンテキストメニューを開始します。しかし、別のコンポーネントをクリックしたときに、アプリケーションでActionModeメニューを閉じてほしい。私はFragment#closeContextMenu()成功せずに試しました。

どうすればそれを達成できますか?

4

3 に答える 3

91

ActionModeを作成/開始するときはいつでも作成者

mMode = startActionMode(....);

却下するには、次の構文を使用します

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

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)
于 2018-01-11T06:01:53.603 に答える
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 に答える