Navigation Safe Argsで値を渡す
Navigation Safe Argsで値を渡していきます。
app/build.gradle
に追加します。
apply plugin: 'androidx.navigation.safeargs.kotlin'
build.gradle
にも追加します。
buildscript {
// Navigation Safe Args
def nav_version = "2.1.0"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
これだけだと「Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6」みたいな感じで怒られるので、さらに app/build.gradle
に以下を追加します。
android {
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
Navigation Graphに argument
を追加して、名前と型を指定します。 android:defaultValue="John Doe"
のようにすればデフォルト値が設定できます。
<fragment
android:id="@+id/output_fragment"
android:name="com.okuzawats.helloworld.fragment.OutputFragment"
android:label="fragment_output"
tools:layout="@layout/fragment_output">
<argument
android:name="name"
app:argType="string"/>
</fragment>
遷移元では、Actionに対象となる引数を渡します。一回、ビルドすると必要なクラスが生成されるかと思います。
val inputText = input_edit_text.text.toString()
val action = InputFragmentDirections.actionInputToOutput(inputText)
findNavController().navigate(action)
遷移先では、 navArgs()
で argument
を取得し、プロパティ名で中に入っている値を取り出します。
private val args: OutputFragmentArgs by navArgs()
private val name: String by lazy {
args.name
}
About me 😎

茨城県つくば市在住のソフトウェアエンジニアです。専門領域はAndroidアプリ開発で、特にアーキテクチャに興味があります。某社でAndroidアプリ開発のテックリードをしています。
Jetpack ComposeによるAndroid MVVMアーキテクチャ入門の著者です。
👉 もっと詳しく
Writing 📝
Android MVVMアーキテクチャ入門
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。
👉 もっと詳しく