روش پیشنهادی برای پیمایش بین مقصدها استفاده از افزونه Safe Args Gradle است. این پلاگین کلاس های شی و سازنده ایجاد می کند که ناوبری ایمن بین مقصدها را امکان پذیر می کند. از Safe Args برای پیمایش و انتقال داده ها بین مقصدها استفاده کنید.
Safe Args را فعال کنید
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle
文件中包含以下 classpath
:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
您还必须应用以下两个可用插件之一。
如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块的 build.gradle
文件中:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
根据迁移到 AndroidX 文档,您的 gradle.properties
文件中必须具有 android.useAndroidX=true
。
کد تولید شده
پس از فعال کردن Safe Args، کد تولید شده شما حاوی کلاسها و روشهایی برای هر اقدامی است که تعریف کردهاید و همچنین کلاسهایی که با هر مقصد ارسال و دریافت مطابقت دارند.
Safe Args برای هر مقصدی که یک عمل از آنجا شروع می شود یک کلاس ایجاد می کند. نام کلاس ایجاد شده "Directions" را به نام کلاس مقصد مبدا اضافه می کند. به عنوان مثال، اگر مقصد مبدا SpecifyAmountFragment
نام داشته باشد، کلاس تولید شده SpecifyAmountFragmentDirections
نام دارد.
کلاس تولید شده حاوی یک متد استاتیک برای هر عملی است که در مقصد مبدا تعریف شده است. این متد هر پارامتر اقدام تعریف شده را به عنوان آرگومان می گیرد و یک شی NavDirections
را برمی گرداند که می توانید مستقیماً به navigate()
ارسال کنید.
مثال Safe Args
برای مثال، یک نمودار ناوبری را با یک عمل در نظر بگیرید که دو مقصد، SpecifyAmountFragment
و ConfirmationFragment
را به هم متصل می کند. ConfirmationFragment
یک پارامتر float
واحد را می گیرد که شما به عنوان بخشی از عمل ارائه می دهید.
Safe Args یک کلاس SpecifyAmountFragmentDirections
با یک متد، actionSpecifyAmountFragmentToConfirmationFragment()
و یک کلاس داخلی به نام ActionSpecifyAmountFragmentToConfirmationFragment
تولید می کند. کلاس داخلی از NavDirections
مشتق شده است و شناسه عمل مرتبط و پارامتر float
را ذخیره می کند. همانطور که در مثال زیر نشان داده شده است، شیء NavDirections
بازگشتی میتواند مستقیماً به navigate()
ارسال شود:
کاتلین
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
جاوا
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
برای اطلاعات بیشتر در مورد انتقال داده بین مقصدها با Safe Args، به استفاده از Safe Args برای ارسال داده با نوع ایمنی مراجعه کنید.
با استفاده از Safe Args از ایمنی نوع اطمینان حاصل کنید
با استفاده از افزونه Safe Args Gradle بین مقصدها حرکت کنید. این پلاگین کلاس های شی و سازنده ساده ای تولید می کند که ناوبری ایمن و انتقال آرگومان بین مقصد را امکان پذیر می کند.
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle
文件中包含以下 classpath
:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
您还必须应用以下两个可用插件之一。
如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块的 build.gradle
文件中:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
根据迁移到 AndroidX 文档,您的 gradle.properties
文件中必须具有 android.useAndroidX=true
。
پس از فعال کردن Safe Args، افزونه کدی تولید می کند که شامل کلاس ها و متدهایی برای هر عملی است که شما تعریف کرده اید. برای هر اقدام، Safe Args همچنین یک کلاس برای هر مقصد مبدا ایجاد میکند، که مقصدی است که عمل از آنجا شروع میشود. نام کلاس تولید شده ترکیبی از نام کلاس مقصد مبدا و کلمه "Directions" است. برای مثال، اگر مقصد SpecifyAmountFragment
نام داشته باشد، کلاس تولید شده SpecifyAmountFragmentDirections
نام دارد. کلاس تولید شده حاوی یک متد استاتیک برای هر عملی است که در مقصد مبدا تعریف شده است. این متد هر پارامتر اقدام تعریف شده را به عنوان آرگومان می گیرد و یک شی NavDirections
برمی گرداند که می توانید به navigate()
ارسال کنید.
به عنوان مثال، فرض کنید یک نمودار ناوبری با یک عمل واحد داریم که مقصد مبدا، SpecifyAmountFragment
را به مقصد دریافت کننده، ConfirmationFragment
متصل می کند.
Safe Args یک کلاس SpecifyAmountFragmentDirections
را با یک متد، actionSpecifyAmountFragmentToConfirmationFragment()
تولید می کند که یک شی NavDirections
برمی گرداند. این شیء NavDirections
بازگشتی میتواند مستقیماً به navigate()
ارسال شود، همانطور که در مثال زیر نشان داده شده است:
کاتلین
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
جاوا
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
برای اطلاعات بیشتر در مورد انتقال داده ها بین مقصدها با Safe Args، به استفاده از Safe Args برای ارسال داده با نوع ایمنی در Pass data بین مقصدها مراجعه کنید.