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>