الطريقة الموصى بها للتنقل بين الوجهات هي استخدام الوسيطات الآمنة المكوّن الإضافي Gradle. ينشئ هذا المكوّن الإضافي فئات عناصر ومنصات تتيح التنقل الآمن من ناحية النوع بين الوجهات. استخدام الوسيطات الآمنة من أجل والتنقل وتمرير البيانات بين الوجهات.
تفعيل الوسيطات الآمنة
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.6" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.6" 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 فئة لكل وجهة تنشأ فيها الإجراء. تشير رسالة الأشكال البيانية
يضيف اسم الفئة المُنشأ "الاتجاهات" إلى فئة الوجهة الأصلية
الاسم. على سبيل المثال، إذا تمت تسمية الوجهة الأصلية
SpecifyAmountFragment، تمت تسمية الصف الذي تم إنشاؤه
SpecifyAmountFragmentDirections
تحتوي الفئة التي تم إنشاؤها على طريقة ثابتة لكل إجراء محدد في
المصدر. تستخدم هذه الطريقة أي مَعلمات إجراءات محدّدة كما
في الوسيطات وتعرض كائن NavDirections الذي يمكنك تمريره مباشرةً
إلى navigate().
مثال على الوسيطات الآمنة
على سبيل المثال، ضع في الاعتبار رسمًا بيانيًا للتنقل يضم إجراءً واحدًا يربط بين
وSpecifyAmountFragment وConfirmationFragment. تشير رسالة الأشكال البيانية
تأخذ ConfirmationFragment معلمة float واحدة تقدمها كجزء من
الإجراء.
تُنشئ أداة Safe Args فئة SpecifyAmountFragmentDirections بصف واحد
وactionSpecifyAmountFragmentToConfirmationFragment() وطريقة داخلية
تسمى ActionSpecifyAmountFragmentToConfirmationFragment. الجزء الداخلي
يتم استنتاج الفئة من NavDirections وتخزِّن معرّف الإجراء المرتبط بها.
مَعلمة float. يمكن بعد ذلك تمرير كائن NavDirections الذي تم إرجاعه
مباشرةً إلى navigate()، كما هو موضح في المثال التالي:
Kotlin
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
Java
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
لمزيد من المعلومات حول تمرير البيانات بين الوجهات باستخدام "الوسيطات الآمنة"، يمكنك الاطّلاع على استخدام "الوسيطات الآمنة" لتمرير البيانات مع الحفاظ على أمان النوع
ضمان أمان الكتابة باستخدام "الوسيطات الآمنة"
التنقّل بين الوجهات باستخدام "الوسيطات الآمنة" المكوّن الإضافي Gradle. ينشئ هذا المكون الإضافي فئات بسيطة من الكائنات ومنصات الإنشاء تفعيل التنقّل الآمن من النوع وتمرير الوسيطة بين الوجهات
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.6" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.6" 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。
بعد تفعيل الوسيطات الآمنة، ينشئ المكوّن الإضافي رمزًا يحتوي على فئات
الطرق لكل إجراء قمت بتحديده. بالنسبة إلى كل إجراء، تتضمن "الوسيطات الآمنة" أيضًا
تنشئ فئة لكل وجهة ناشئة، وهي الوجهة
الذي نشأ منه الإجراء. يتكوّن اسم الفئة الذي يتم إنشاؤه من مجموعة من
اسم فئة الوجهة الأصلية وكلمة "الاتجاهات". على سبيل المثال:
إذا كانت الوجهة تحمل اسم SpecifyAmountFragment، يكون الصف الذي تم إنشاؤه هو
باسم SpecifyAmountFragmentDirections. تحتوي الفئة التي تم إنشاؤها على قيمة ثابتة
لكل إجراء محدد في الوجهة الأصلية. تستغرق هذه الطريقة
أي معلَمات إجراء محدّدة كوسيطات وتعرض كائن NavDirections
يمكنك تمريره إلى navigate()
على سبيل المثال، لنفترض أن لدينا رسمًا بيانيًا للتنقل يتضمّن إجراءً واحدًا
تربط الوجهة الأصلية SpecifyAmountFragment بوحدة استقبال
الوجهة، ConfirmationFragment.
تُنشئ أداة Safe Args فئة SpecifyAmountFragmentDirections بصف واحد
وهي actionSpecifyAmountFragmentToConfirmationFragment()، التي تُرجع
كائن NavDirections. يمكن بعد ذلك تمرير كائن NavDirections الذي تم إرجاعه
مباشرةً إلى navigate()، كما هو موضح في المثال التالي:
Kotlin
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
Java
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
لمزيد من المعلومات حول تمرير البيانات بين الوجهات باستخدام "الوسيطات الآمنة"، يمكنك الاطّلاع على استخدام "الوسيطات الآمنة" لإرسال البيانات مع الحفاظ على أمان النوع في بيانات البطاقة بين .