سلسلة
تعليم برمجة تطبيقات الأندرويد
الدرس السابع
والعشرون
مرحبا بكم في درس جديد من دروس سلسلة
برمجة تطبيقات الأندرويد التعليمية، سنتابع في درسنا هذا ما كنا قد قمنا به في
الدرس السابق، حيث كنا قد بدأنا بتعلم كيفية نقل القيم من واجهة إلى أخرى وأنجزنا
القسم الأول من العملية والذي اعتمد وقتها على التابع putExtra() عبر استخدام
المفهوم الذي تعلمناه سابقاً في الدروس الماضية وهو مفهوم Intent أو ما أسميناه
باللغة العربية الجسر، فهي بنا نكمل مشوارنا في هذا التطبيق البسيط والمهم جداً.
لنعود إلى تطبيقنا السابق الذي
أسميناه ShopApp ضمن برنامج أندرويد أستديو وتحديداً إلى
الواجهة البرمجية MainActivity.java والتي كنا قد كتبنا ضمنها الكود التالي
الموضح في الصورة:
ونلاحظ اللون الأحمر الذي كتبت به
الكلمة Second التي تعبر عن الواجهة التالية التي نريد
الانتقال إليها والسبب في ذلك هو أننا ببساطة لم نقم بإنشاء هذه الواجهة برمجياً
بعد ومن هنا سننطلق في درسنا هذا فهي بنا ننشأ هذه الواجهة البرمجية ولن أدخل في
تفاصيل إنشاء الواجهة البرمجية لأننا فد تعلمنا ذلك سابقاً بل سأكتفي بوضع صورة
نهائية للكود البرمجي للواجهة (ونقصد الكود الأولي) قبل أن نضيف التعليمات الجديدة
وهو كما يلي:
وبالعودة إلى الواجهة الأولى
ومعاينتها نجد أن اللون الأحمر قد اختفى وهذا منطقي جداً كوننا قمنا بإنشاء الواجهة
البرمجية المسماة Second والتي لم يكن المترجم (ونقصد Compiler) قد عثر
عليها في البداية أما الآن فقد عثر عليها، ممتاز أليس كذلك؟! طبعا فأجمل ما في
البرمجة عملية حل المشاكل الواحدة تلو الأخرى.
الآن سنكمل عملية نقل القيم عبر
استقبالها في الواجهة الثانية فكيف نقوم بذلك؟! العملية بسيطة جداً وسنقوم بها عبر
الإجابة عن السؤال التالي أولاً: هل ستصل القيم تلقائياً بمجرد فتح الواجهة
الثانية أم أننا بحاجة إلى الضغط على زر ما لاستلامها؟! وتأتي أهمية الجواب للسبب
التالي:
إن كنا نريد إظهار القيم عند الضغط
على زر ما فإننا بحاجة إلى إضافة الطريقة onClick() بعد تعريف
الزر برمجياً كما اعتدنا وإضافة الحدث له أما إن أردنا للقيم أن تعرض بشكل تلقائي
فعندها لسنا بحاجة لما سبق لأننا سنلجأ إلى كتابة التعليمات في الطريقة onCreate() التي ستعمل
تلقائياً بمجرد بدء تنفيذ الواجهة الثانية.
الجواب واضح والحل إذاً واضح، فهي
بنا نضيف الكود التالي إلى الطريقة onCreate():
Bundle extras =
getIntent().getExtras();
String val1,val2; int val3,val4; if(extras != null) { val1 = extras.getString("Name"); val2 = extras.getString("Item"); val3 = extras.getInt("Count"); val4 = extras.getInt("Total"); } |
قد يبدو الكود في البداية معقداً
فلا تقلقوا إنه ليس كذلك أبداً فهي بنا نقوم بتوضيحه بشكل مبسط ومفهوم:
الخطوة الأولى التي قمنا بها هي
تعريف غرض من الصف Bundle وهو صف مبني مسبقاً في الأندرويد مسؤول عن
القيام بمهام مختلفة منها استقبال القيم المرسلة عبر الجسر (ونقصد هنا Intent) وأسمينا
هذا الغرض extras وهو اسم لا على التعيين أي تستطيعون اختيار
الاسم الذي تريدونه هنا والأهم هو الطرف الثاني من التعليمة والذي يخبر المترجم
بإحضار القيم عبر التابع getExtras() وذلك من الجسر الموجود والمعرف حالياً عبر
الطريقة getIntent() وتخزين هذه القيم في المتغير extras أي بالمختصر
أصبح الكائن (أو الغرض) extras يخزن جميع القيم المرسلة من الواجهة الأولى
إلى الواجهة الثانية عبر الجسر Intent الذي كنا قد أنشأناه في الواجهة الأولى
وربطناه مع هذه الواجهة.
أما بخصوص التعليمات المتبقية
فسنتابعها في الدرس القادم وإلى حينها عليكم التدرب على ما قمنا به، ونلقاكم بكل
الود في الدرس القادم.
ليست هناك تعليقات:
إرسال تعليق