Ну, это правильный способ работы.Метод Navigation.createNavigateOnClickListener()
возвращает a View.OnClickListener
и в соответствии с документами правильный способ его определения - использование даже в Kotlin:
button.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_fragment, null));
Если вы используете метод внутри лямбды, сама лямбда является прослушивателем щелчков, поэтому вы возвращаете прослушиватель щелчков внутри прослушивателя щелчков, поэтому она не работает.Это похоже на следующее:
button.setOnClickListener {
View.OnClickListener {
Toast.makeText(this, "hi", Toast.LENGTH_LONG).show()
}
}
Что вас может заинтересовать, так это:
view.findViewById<Button>(R.id.navigate_action_bt)?.setOnClickListener { view ->
view.findNavController().navigate(R.id.go_to_step_one)
}
, который будет выполнять навигационный переход при нажатии кнопки.