-
مع الأخذ في الاعتبار المعرفة التي
تعلمناها حول إلغاء الموارد
-
في المجلدات الأخرى،
-
سنراجع التعليمة البرمجية معًا حول كيفية
إنشاء واجهة مستخدم ذات جزأين
-
للجهاز اللوحي. أولاً، قم بإزالة مجلد القيم
W820dp لأننا لسنا بحاجة إلى تقديم
-
منطق محدد عندما يكون الاتجاه الحالي
أكبر من 820dp.
-
بعذ ذلك امض قدمًا و قم بإجراء
تغييرات تخطيط XML.
-
ثم أنشئ مجلد تخطيط جديد SW 600dp.
-
ثم أضف ملفًا جديدًا باسم activity_main.
-
نستخدم نفس اسم الملف كما هو في
مجلد التخطيط الأساسي activity_main
-
بحيث يلغي اسم الملف السلوك
على الأجهزة اللوحية بشكل خاص.
-
لمعرفة التعليمة البرمجية لهذا
الملف يمكنك التحقق مما يلي.
-
بشكل أساسي، هي عبارة عن
تخطيط خطي أفقي يمكنه الاحتفاظ بجزء توقعات
-
على اليسار وجزء تفاصيل على اليمين.
-
هذا هو الوقت المناسب للحديث عن
الأجزاء الديناميكية والثابتة.
-
في تطبيقنا، جزء التوقعات
هو الجزء الثابت لأننا
-
حددناه في تخطيط XML بغض النظر عن
الاتجاه أو حجم الجهاز،
-
ونحن نعلم بأننا سنحتاج إلى
جزء توقع في النشاط الأساسي.
-
من ناحية أخرى، لا نعلن سوى عن حاوية
لجزء التفاصيل، ولكن
-
ليس الجزء الفعلي.
-
تمت تهيئته بقيم مختلفة
في كل مرة على أنه
-
جزء ديناميكي، لذا من الأفضل
إنشاء هذا الجزء وإضافته
-
ديناميكيًا في معاملة جزء في تعليمة Java
البرمجية في النشاط الأساسي.
-
بهذه الطريقة، يمكن لمدير الجزء
تعقب قيم التهيئة هذه
-
وتمريرها إلينا مرة أخرى بعد تدوير الجهاز.
-
عندئذٍ نحتاج إلى تحديث تخطيطات
واجهة المستخدم ذات الجزء الواحد
-
بحيث تتسق مع الحالة ذات الجزأين.
-
لذا في الملف الرئيسي للنشاط الخاص بمجلد
التخطيط الأساسي، يُستخدم هذا ليكون
-
تخطيط إطار سوف نعلن عنه كجزء توقع.
-
بهذه الطريقة سيلائم الواجهة ذات الجزأين،
-
حيث تم الإعلان عن هذا أيضًا كجزء في XML.
-
بهذه الطريقة، لن يحتاج
النشاط الرئيسي إلى إضافة
-
جزء التوقع بطريقة ديناميكية.
-
في أسلوب طريقة عرض OnCreate
الخاصة بالنشاط الرئيسي.
-
حيث إن الجزء موجود داخل هذا التخطيط
بالفعل، يمكننا إزالة هذا فقط،
-
حتى لا نضيفة مرة ديناميكيًا.
-
وبالمثل نعدّل تخطيط تفاصيل
النشاط في مجلد التخطيط الأساسي.
-
ونغيّر معرّف تخطيط الإطار
ليكون حاوية تفاصيل الطقس.
-
وبالتالي يطابق معرف طريقة عرض الحاوية
في حالة واجهة المستخدم ذات الجزأين.
-
النمط هنا هو أن تتم إضافة جزء التفاصيل إلى
-
حاوية تسمى weatherdetailcontainer،
-
في حالة الجزأين والجزء الواحد.
-
نظرًا لأننا قمنا بتغيير
اسم الحاوية،
-
يجب علينا أيضًا تحديث نشاط التفاصيل.
-
لا يُستخدم هذا إلا في وضع الجزء الواحد.
-
هنا حيث قمنا بتغيير اسم الحاوية.
-
في وضع الجزء الواحد، سيضيف النشاط
المفصّل جزء التفاصيل
-
إلى هذه الحاوية ديناميكيًا.
-
بعد تعديل التخطيط، علينا
تحديث النشاط الرئيسي
-
لكي نضيف جزء التفاصيل بطريقة ديناميكية.
-
في أسلوب OnCreate للنشاط الرئيسي،
نتحقق من وجود حاوية
-
تفاصيل الطقس في التخطيط لمعرفة هل هذه
واجهة مستخدم ذات جزأين أم لا.
-
نتعقب هذه المعلومات في متغير منطقي
يسمى mTwoPane.
-
تذكر أننا نبدأ بالحرف m،
لأنه متغير خاص بعضو.
-
في هذه الحالة، يجب أن يكون
المتغير المنطقي "صحيحًا".
-
وبالتالي نمضي قدمًا في إنشاء
جزء تفاصيل جديد،
-
وإضافته إلى weatherdetailcontainer.
-
إننا نلتزم بالتغيير عن طريق استخدام
معاملة جزء،
-
التي قدمها رادو سابقًا.
-
وإلا، إذا لم تكن حاوية التفاصيل
موجودة في التخطيط، فيجب أن يكون
-
المتغير المنطقي "خطأ"، مما يعني أن هذه
واجهة مستخدم ذات جزء واحد للهواتف.
-
في هذه الحالة، سيعالج نشاط التفاصيل
عرض جزء التفاصيل.
-
لاحظ أنه في حالة الجزأين، نتحقق من حالة
حزمة savedinstantstate
-
لنعلم إذا كانت خالية.
-
فإذا لم تكن حزمة savedinstantstate خالية،
-
فلا ننشئ واحدة جديدة، للسبب التالي.
-
لنفترض أنك تريد تدوير الجهاز.
-
قبل فشل النشاط
-
والأجزاء، نخزّن المعلومات
في حزم حفظ الحالة.
-
ثم بعد تغيير الاتجاه، يستعيد النظام النشاط
-
والأجزاء، عن طريق تمرير نفس الحزمة،
-
بحيث يمكن إعادة إنشائها بنفس الحالة.
-
وهذا يعني أنه في حالة وجود الحزمة،
عندئذٍ يجب أن نسمح للنظام
-
بمعالجة استعادة جزء التفاصيل،
ويمكننا تخطي هذه التعليمة البرمجية.
-
تتم إضافة جزء تفاصيل
مرة واحدة بطريقة ديناميكية.
-
مما يجعله يعرض بعض بيانات
العنصر النائب لأغراض الاختبار فقط.
-
وفي وقت لاحق، سنفحص بدقة المنطق
الصحيح، بحيث يمكنه عرض
-
المعلومات الصحيحة للبيانات
المحددة على اليسار.
-
تعديل جزء التفاصيل بحيث
-
لا يتوقع التعليمة الهدف القادمة
للحصول على URI للبيانات.
-
في هذه الحالة، سيتراجع جزء التفاصيل
-
إلى بعض بيانات العنصر النائب فقط
الموجودة في XML الخاص بنا.
-
والسبب وراء أن يصبح الهدف فارغًا
هو أن جزء التفاصيل يمكن أن
-
يوجد داخل النشاط الرئيسي.
-
ولا يتم تشغيل النشاط الرئيسي مع URI
-
لتاريخ واحد فقط مثل نشاط التفاصيل
الذي يتم تشغيله معه عادةً.
-
بمجرد إجراء التغييرات
-
للإطارات السلكية، يجب
أن يبدو التطبيق هكذا.
-
والسبب وراء عدم عرض رمز هنا،
يرجع إلى أننا قمنا
-
بإزالة الرمز حتى لا يصبح تعليمة برمجية
مضمنة في التخطيط.
-
لكن بمجرد تعبئة هذه البيانات بطريقة
ديناميكية في قسم لاحق،
-
يجب أن تظهر مرة أخرى.