DataBindingでXMLのみでクリック時のNavigationを完結させる
ViewModelにクリック時のメソッド用意してDatabindingで指定して〜とかってやるのが面倒だったのでサクッとレイアウトのXMLのみで完結させる方法
NavigationとRをimportして、Navigationのメソッドを使うことで実現出来る。 popBackStackしたいだけならRのimportはいらない。
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="androidx.navigation.Navigation" /> <import type="app.package.R" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- id指定での遷移 --> <Button android:onClick="@{Navigation.createNavigateOnClickListener(R.id.targetFragment)}" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <!-- popBackStack --> <Button android:onClick="@{(view) -> Navigation.findNavController(view).popBackStack()}" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </layout>