#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 {
...
}
}