Пользовательский OnClick () с NavigationComponent - PullRequest
0 голосов
/ 21 января 2020

Я реорганизую свою деятельность, чтобы использовать NavigationComponent. В моей деятельности перед рефакторингом у меня была кнопка, которая в верхней части Навигации выполняла некоторые бизнес-логики c в фоновом режиме при нажатии.

 <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:onClick="@{() -> parentViewModel.pay()}"
     />

Кажется, что этот метод onClick является тем же, который используется для навигации в NavigationComponent, потому что я не могу использовать их оба одновременно. Если я раскомментирую проблемную c строку

android: onClick = "@ {() -> parentViewModel.pay ()}

бизнес-логика c вызывается, но навигация перестает работать. Я создал действительно хакерский обходной путь, в котором я вызываю необходимые бизнес-логики c в onViewCreated фрагмента, к которому осуществляется навигация, однако это просто не обрежет его в долгосрочной перспективе .

Вот так я сейчас вызываю бизнес-логи c из onViewCreated и устанавливаю навигацию по кнопке.

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    parentViewModel.pay()

    view.findViewById<View>(R.id.next_button)?.setOnClickListener(
        Navigation.createNavigateOnClickListener(R.id.next_action)
    )
}
...