تمرير الوسائط
أرسل البيانات إلى وجهة
تمرير الوسائط درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
تمرير البيانات بين الشاشات
غالبًا ما تحتاج الوجهة إلى بيانات، مثل معرّف العنصر المطلوب عرضه. في Navigation Compose، تُضمَّن الوسائط مباشرةً في المسار، بطريقة تشبه عنوان URL.
مسار يحتوي على عنصر نائب
صرّحوا عن عنصر نائب في المسار باستخدام الأقواس المعقوفة. في هذه الحالة، تُعد {id} وسيطةً باسم id.
composable("details/{id}") { backStackEntry ->
// read id here
}التصريح عن نوع الوسيطة
أخبروا أداة التنقّل بنوع الوسيطة باستخدام arguments وnavArgument. إذ يتحقق ذلك من القيمة ويحوّلها نيابةً عنكم.
composable(
"details/{id}",
arguments = listOf(navArgument("id") { type = NavType.IntType })
) { /* ... */ }NavType
يحدّد NavType نوع بيانات الوسيطة، مثل IntType وStringType وBoolType وغير ذلك. وتحلل أداة التنقّل قيمة المسار وفقًا لذلك.
قراءة الوسيطة
تمنحكم دالة لامدا الخاصة بالوجهة كائن backStackEntry. اقرأوا الوسائط من backStackEntry.arguments.
composable(
"details/{id}",
arguments = listOf(navArgument("id") { type = NavType.IntType })
) { backStackEntry ->
val id = backStackEntry.arguments?.getInt("id") ?: 0
DetailsScreen(id = id)
}التنقّل باستخدام قيمة
لفتح الشاشة، أنشئوا سلسلة المسار مع استبدال العنصر النائب بالقيمة الفعلية.
navController.navigate("details/42")إنشاء المسار بأمان
استخدموا قوالب السلاسل لإدراج القيمة. واحرصوا على أن يطابق جزء المسار المسار المصرَّح عنه تمامًا.
val itemId = 42
navController.navigate("details/$itemId")الوسائط الاختيارية
تستخدم الوسائط الاختيارية أسلوب سلسلة الاستعلام، مثل ?name=value، مع تحديد defaultValue. ويمكن حذفها عند التنقّل.
composable(
"search?query={query}",
arguments = listOf(navArgument("query") {
defaultValue = ""
})
) { /* ... */ }تتطلب الوسائط النصية عناية
يجب أن تكون الوسائط النصية آمنة للاستخدام في عناوين URL. تجنّبوا تمرير النصوص الطويلة أو الشرطات المائلة عبر المسارات؛ وبدلًا من ذلك، استخدموا ViewModel مشتركًا أو مستودعًا يعتمد على معرّف.
مرّروا المعرّفات لا الكائنات
أفضل ممارسة هي تمرير معرّف صغير، مثل معرّف عنصر، عبر المسار، ثم البحث عن الكائن الكامل في شاشة الوجهة. لا تحوّلوا الكائنات الكبيرة إلى نصوص تسلسلية داخل المسارات.
تجميع الأجزاء
تنتقل قائمة إلى شاشة التفاصيل، مع تمرير معرّف العنصر المحدد.
composable("list") {
ListScreen(onItemClick = { id ->
navController.navigate("details/$id")
})
}
composable(
"details/{id}",
arguments = listOf(navArgument("id") { type = NavType.IntType })
) { entry ->
val id = entry.arguments?.getInt("id") ?: 0
DetailsScreen(id = id)
}تحقّق سريع
كيف تصرّحون عن وسيطة عدد صحيح مطلوبة باسم id في مسار؟
مراجعة
تمرير الوسائط:
- ضعوا
{placeholder}في المسار. - صرّحوا عن النوع باستخدام
navArgumentوNavType. - اقرؤوا القيمة من
backStackEntry.arguments. - تنقّلوا بعد استبدال العنصر النائب بالقيمة؛ ومرّروا معرّفات صغيرة بدلًا من الكائنات الكبيرة.
الأسئلة الشائعة
هل درس «تمرير الوسائط» مجاني؟
نعم — نص درس «تمرير الوسائط» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «تمرير الوسائط»؟
أرسل البيانات إلى وجهة تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تمرير الوسائط»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إعداد NavHost
- التنقّل بين الشاشات
- تمرير الوسائط
- التنقّل السفلي