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