34

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

どのように私はそれを達成することができますか?あなたが作成しているときはいつでも

答えて

78

/ActionModeが

mMode = startActionMode(....); 

によって作成開始することは、ActionModeを終了する構文

if (mMode != null) 
{ 
    mMode.finish(); 
} 
+0

私は、私も私の心を交差させないように疲れていると思います。ありがとうVipul! – kaneda

+9

この問題に対するより「ローカルな」アプローチはありませんか?メンバーを作成せずに何か? –

+0

注:mModeを持っているものは、宣言できない同じアクティビティのクラスフィールドである必要があります(名前が示すように)。同じコールバックで使用します。 – Chris

0

Kotlinコード

使用ActionMode.Callback次使用却下しますメニュー項目を押した後

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) 
関連する問題