Skip to main content

AndroidでSafeArgsを使ってみた

AndroidでNavigationの画面遷移をやって分からないことをまとめた
の続編

前回のサンプルを使ったまま
SafeArgsを使ってみた


・セットアップ

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.1"
apply plugin: "androidx.navigation.safeargs.kotlin"

・XMLのセットアップ
UIからargumentを追加する

<fragment
    android:id="@+id/secondFragment"
    android:name="com.example.navigation.SecondFragment"
    android:label="fragment_second"
    tools:layout="@layout/fragment_second">
    <action
        android:id="@+id/action_second_to_third"
        app:destination="@+id/thirdFragment"
        app:enterAnim="@anim/slide_from_bottom"
        app:exitAnim="@anim/slide_to_top" />
    <argument
        android:name="count"
        app:argType="integer"
        android:defaultValue="0" />
</fragment>

・FirstFragment
argumentを定義するとメソッドが追加されるパターンなのでcleanしてrebuildしましょう
遷移先じゃなくて遷移元にメソッドが生える

view.button.setOnClickListener {
    val diretion = FirstFragmentDirections.actionFirstToSecond(2)
    findNavController().navigate(diretion)
}

・SecondFragment
navArgsに移譲するとメソッドが生える

val args: SecondFragmentArgs by navArgs()
val count = args.count

 

これにて実装終わり
型が定義されるしコード量少なくなるし良いことづくめ
ただ既存のbundle突っ込んでるところ書き換えるにはnavigation導入しないといけないのでちょっと難易度は高いなぁ・・・
ここまで勉強して新規プロジェクトだったら調べながらできるところまできた予感

・参考サイト
https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja
https://ticktakclock.hatenablog.com/entry/2020/02/02/170615

関連記事:

Pocket