#android #kotlin
#Android #kotlin
Вопрос:
Я пытаюсь использовать findNavController в моем адаптере привязки, используя контекст представления.
Как вы думаете, это возможно?
Это мой код :
@BindingAdapter("onClickForDetails", "fragment")
fun setOnClickListenerForDetails(
view: View,
digitalService: DigitalService,
) {
view.setOnClickListener {
val navDirections =
BottomNavGraphDirections.actionFragmentToServiceDetailsFragment(
packageName = digitalService.packageName,
categoryId = digitalService.category
)
???.findNavController().navigate(navDirections)
}
view.setOnLongClickListener {
showServicesDetailsDialog(view.context, digitalService)
return@setOnLongClickListener true
}
}
Комментарии:
Ответ №1:
Я думаю, это сработает, если ваше представление является представлением в NavHost. Вот как выполняется расширение для представления:
/**
* Find a [NavController] associated with a [View].
*
* Calling this on a View not within a [NavHost] will result in an
* [IllegalStateException]
*/
fun View.findNavController(): NavController =
Navigation.findNavController(this)
Теперь я бы не рекомендовал этого, вы передаете представление только для этого. Я бы рекомендовал создать интерфейс для события onClick и обрабатывать навигацию в действии.