Использование зависимости Android Safe Args для типобезопасной навигации в Android

“Android Safe Args Dependency” относится к библиотеке в разработке Android, которая обеспечивает типобезопасный способ передачи аргументов между пунктами назначения (фрагментами, действиями) с помощью компонента навигации. Вот несколько методов с примерами кода по использованию зависимости Android Safe Args:

  1. Добавить зависимость Safe Args.
    Чтобы использовать Safe Args, вам необходимо добавить плагин Safe Args Gradle и зависимость в файл build.gradle вашего проекта.

В файле build.gradle уровня проекта:

buildscript {
    repositories {
        // ...
    }
    dependencies {
        // ...
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:<version>"
    }
}

В файле build.gradle на уровне модуля:

apply plugin: "androidx.navigation.safeargs.kotlin"
dependencies {
    // ...
    implementation "androidx.navigation:navigation-fragment-ktx:<version>"
    implementation "androidx.navigation:navigation-ui-ktx:<version>"
}

Замените соответствующим номером версии.

  1. Определите аргументы в графе навигации.
    В XML-файле графа навигации (например, nav_graph.xml) определите аргументы для пунктов назначения. Например, предположим, что у вас есть два фрагмента: FragmentAи FragmentB.
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@id/fragmentA">
    <fragment
        android:id="@+id/fragmentA"
        android:name="com.example.FragmentA">
        <action
            android:id="@+id/action_fragmentA_to_fragmentB"
            app:destination="@id/fragmentB">
            <argument
                android:name="argExample"
                app:argType="string" />
        </action>
    </fragment>
    <fragment
        android:id="@+id/fragmentB"
        android:name="com.example.FragmentB">
        <argument
            android:name="argExample"
            app:argType="string" />
    </fragment>
</navigation>
  1. Навигация с помощью Safe Args:
    В коде, в котором вы хотите перейти от FragmentAк FragmentB, вы можете передавать аргументы с помощью Safe Args.
  2. >

val action = FragmentADirections.actionFragmentAToFragmentB(argExample = "Hello, Fragment B!")
findNavController().navigate(action)

В FragmentBвы также можете получить доступ к значению аргумента с помощью Safe Args.

val args: FragmentBArgs by navArgs()
val argExample = args.argExample

Вот и все! Вы успешно использовали зависимость Android Safe Args для передачи аргументов между фрагментами с помощью компонента навигации.