Вызов startActionMode из фрагмента

#android #kotlin #android-fragments #contextmenu

#Android #kotlin #android-фрагменты #contextmenu

Вопрос:

Я пытаюсь запустить контекстное меню режима действий из фрагмента при нажатии кнопки. Я не уверен, как вызвать «startActionMode ()» из метода onClick в моем фрагменте.

MyFragment

 class MyFragment : Fragment() {
    ...
    
    private var mActionMode: ActionMode? = null 
    
    // when this button is clicked it should launch the Contextual Action Bar (CAB) 
    fun myCAB() {
        // Check to see CAB is currenty active. 
        if(mActionMode != null) return        
        mActionMode = mActivity.startActionMode(actionModeCallback)
    }

    // ActionMode.Callback interface, handles actions for contextual CAB
    private val actionModeCallback: ActionMode.Callback = object : ActionMode.Callback {
         ... 
    }
}
  

Я пробовал использовать

  • Требуется активность,
  • Ссылка на действие из onAttach(действие: действие),

Оба параметра возвращают несоответствие типа. Требуется: androidx.appcompt.view.ActtionMode? Найдено: android.view.ActionMode?

Комментарии:

1. Измените импорт import android.view. ActionMode для импорта androidx.appcompt.view. ActtionMode

2. В настоящее время я импортирую androidx.appcomp.view. ActionMode.

Ответ №1:

Вы можете выполнить действие, а затем вызвать режим startSupportAction.

 mActionMode = (activity as MainActivity?)!!.startSupportActionMode(actionModeCallback)
  

Вот как это выглядит в коде.

 class MyFragment : Fragment() {
    ...

    private var mAction: ActionMode? = null

    fun myCAB() {
        if(mActionMode!= null) return
      
        // as casts the type if is successful or returns null
        mAction = (activity as MainActiivty?)!!.startSupportActionMode(actionModeCallback)
    } 

    private val actionModeCallback: ActionMode.Callback = object : ActionModeCallback {
        ... 
    }
}