يمكنك إنشاء روابط بين الأجزاء باستخدام إجراءات التنقّل. استدعاء يأخذ إجراء التنقل المستخدم من وجهة إلى أخرى. هذا الدليل ويشرح ماهية الإجراءات ويوضح كيف يمكنك إنشاؤها واستخدامها.
نظرة عامة
ولكل إجراء معرّف فريد ويمكن أن يحتوي على سمات إضافية، مثل الوجهة. تُحدِّد الوجهة الشاشة التي ينقل التطبيق إليها المستخدِم. عند تشغيل الإجراء. يمكن أن يستخدم الإجراء أيضًا الوسيطات لنقل البيانات من وجهة إلى أخرى.
- الوسيطات الآمنة: باستخدام الإجراءات، يمكنك استبدال أرقام تعريف الموارد بأرقام تعريف آمنة. العمليات التي يتم إنشاؤها في Args، ما يوفّر المزيد من الأمان في وقت التجميع.
- الصور المتحركة: يمكنك أيضًا تحريك الانتقالات بين الوجهات. لمزيد من المعلومات، يُرجى الاطّلاع على تحريك عمليات النقل بين الوجهات.
أمثلة
حدِّد الإجراءات في ملف XML للرسم البياني للتنقّل باستخدام علامات <action>
. تشير رسالة الأشكال البيانية
ينفذ المقتطف التالي إجراءً يمثل انتقالاً من
FragmentA
إلى FragmentB
<fragment
android:id="@+id/fragmentA"
android:name="com.example.FragmentA">
<action
android:id="@+id/action_fragmentA_to_fragmentB"
app:destination="@id/fragmentB" />
</fragment>
التنقّل باستخدام إجراء
للتنقل باستخدام هذا الإجراء، عليك الاتصال بـ NavController.navigate()
وتمرير
إنه الإجراء id
:
navController.navigate(R.id.action_fragmentA_to_fragmentB)
الإجراءات العامة
يمكنك استخدام الإجراءات العامة للانتقال إلى وجهة من أي مكان.
بالنسبة إلى أي وجهة في تطبيقك يمكن الوصول إليها من خلال أكثر من مسار واحد تحديد إجراء عام مقابل يؤدي إلى الانتقال إلى الوجهة.
ضع في الاعتبار المثال التالي. results_winner
وgame_over
يجب أن تنبثق وجهاتك إلى وجهة المنزل. تشير رسالة الأشكال البيانية
يوفر الإجراء action_pop_out_of_game
إمكانية تنفيذ ذلك؛
action_pop_out_of_game
هو إجراء عام خارج أي جزء محدد.
هذا يعني أنه يمكنك الرجوع إليه وتسميته في أي مكان داخل
in_game_nav_graph
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/in_game_nav_graph"
app:startDestination="@id/in_game">
<!-- Action back to destination which launched into this in_game_nav_graph -->
<action android:id="@+id/action_pop_out_of_game"
app:popUpTo="@id/in_game_nav_graph"
app:popUpToInclusive="true" />
<fragment
android:id="@+id/in_game"
android:name="com.example.android.gamemodule.InGame"
android:label="Game">
<action
android:id="@+id/action_in_game_to_resultsWinner"
app:destination="@id/results_winner" />
<action
android:id="@+id/action_in_game_to_gameOver"
app:destination="@id/game_over" />
</fragment>
<fragment
android:id="@+id/results_winner"
android:name="com.example.android.gamemodule.ResultsWinner" />
<fragment
android:id="@+id/game_over"
android:name="com.example.android.gamemodule.GameOver"
android:label="fragment_game_over"
tools:layout="@layout/fragment_game_over" />
</navigation>