-
Title:
-
Description:
-
دعونا ننظر للرقم 1
-
قبل أن أكشف لكم عن الجواب، سأقوم
بنسخ هذا الكود
-
و لصقه في "Android Studio"
-
أريد أن أريك ما نوع الخطأ الذي سيظهر
-
الآن عندما كنت تقوم بحل الاختبار، لم تكن
بحاجة لاستخدام "Android Studio"
-
قد تكون حللته فقط بالنظر إلى الكود هنا
-
و من ثم كتابه الإجابة
-
إذا، في حال استخدامك "Android Studio"
أو عدمه، لا بأس بالنسبة إلي
-
لجعل الكود يعمل، قمت بإنشاء
مشروع جديد
-
و بعد ذلك قمت بتعديل ملف التصميم
Activity_Main
-
حتى يكون فيه عدد من الـ views التي تملك هذه
المعرّفات (IDs) التي سنشير إليها
-
لست على ثقة بالشكل الذي سيتخذه
هذا التصميم
-
لكنني أردت فقط أن أضع الـ views هنا مع
أسماء المعرّفات (IDs) المطابقة لكل منها
-
بهذه الطريقة، سيعمل الكود الخاص بي هنا
-
إذاً من أجل الكود الأول، قمت بلصق الكود
هنا، و أرى أن هنالك خطأ
-
يقول "Android Studio" بأنه لا يستطيع تنفيذ
الطريقة setText
-
إن كنت تتذكر من الفيديو الماضي
-
ذكرت أن setText هو طريقة خاصة
بالصف TextView
-
مما يعني أنك تستطيع استدعاء هذه الطريقة
فقط مع أغراض من الصف TextView
-
في هذه الحالة، نحن نستدعيها مع
الغرض nameTextView
-
و قد تم التصريح عن nameTextView
كغرض من الصف View
-
نحن بحاجة إلى تغيير هذا الغرض إلى
غرض من الصف TextView
-
ثم نحصل على خطأ يخبرنا بوجود أنماط متضاربة
-
و المطلوب هو TextView غرض من
النمط TextView
-
لكن بدلاً من ذلك تم العثور على غرض من
النمط View
-
ذلك لأن الطريقة findViewById تعيد غرض
من النمط View
-
و هذا الجانب الأيسر يتطلب غرض
من النمط TextView
-
هذا يعني أنه علينا إضافة هذا حتى نقوم
بقصر ال view المعاد من
-
الطريقة findViewById إلى متحول
من النمط TextView
-
يمكننا بعدها تخزين هذا الشيء كاملاً
-
والذي هو nameTextView فيالمتحول
الموجود في الجانب الأيسر
-
عندها يختفي الخطأ، و يصبح بإمكاننا أن نضع
هذا النص "Laura" في هذا الـ TextView
-
الخطأ موجود في السطر الأول ، لذا قمت
الكود الصحيح ها هنا
-
التفسير العام هو أننا بحاجة لقصر هذا
الـ View إلى TextView
-
ثم تخزين هذه القيمة داخل المتحول
nameTextView
-
بهذه الطريقة يمكنننا
استدعاء nameTextView.setText
-
والتي هي طريقة من الصف TextView
على السطر التالي من الكود هنا
-
دعونا ننتقل إلى الكود رقم 2
-
سأقوم بنسخ الكود و وضعه في "Android Studio"
-
وها هو الكود الذي ألصقته
-
يبدو السطر الأول من الكود صحيحاً
ليست هناك أية أخطاء
-
ولكن السطر الثاني يحوي تسطيراً
باللون الأحمر
-
يقول الخطأ أن هناك أنماطاً متضاربة
-
كما و يقول أن تم العثور على int
بدلاً من String
-
لفهم هذا بشكل أفضل
-
ينبغي لنا أن نبحث عن الطريقة getMaxLines
ضمن وثائق TextView
-
في وثائق TextView
سأقوم بالبحث عن
-
الطريقة getMaxLines
-
وها هي ذا
-
ليس لها أية وسائط دخل
-
و القيمة المعادة من هذه الطريقة هي من
النمط الصحيح
-
ولهذا السبب كان "Android Studio" يتذمر
لأن هذه الطريقة
-
كانت تعيد قيمة من int
-
و نحن كنا نحاول تخزينها في
متحول من String
-
ونتيجة لذلك، أنا بحاجة لتغيير نمط البيانات
الخاص بالمتحول ليصبح من النمط int
-
ثم يختفي الخطأ
-
إذاً، القيمة المعادة من هذه الطريقة
هي من النمط الصحيح
-
بحيث يمكننا أن نخزنها
في المتحول maxLines
-
مازال هناك تحذير
-
يقول إن المتحول maxLines لم يتم
استخدامه قط
-
ولكن هذا الكود هو مجرد قصاصة
-
أفترض أنه إذا كان
هذا تطبيقاً نظامياً
-
فإننا حقيقةً سنرغب في استخدام هذا
المتحول لاحقاً
-
إذاً، الخطأ موجود في السطر الثاني وها
هو الكود المصحح
-
التفسير العام هو أن القيمة المعادة من هذه
الطريقة كان يجب أن
-
تكون من int
-
دعونا ننتقل إلى الكود رقم 3
-
وها هو الكود رقم ثلاثة
-
قمت بنسخ الكود الموجود في السؤال
الثالث و لصقه في "Android Studio"
-
هناك رسالة خطأ تخبرنا
بوجود أنماط متناقضة
-
تم العثور على متحول من النمط view في حين
أن المطلوب هو متحول من النمط ImageView
-
هذا مماثل للخطأ الذي رأيناه للتو مع
المتحول من النمط Textview
-
تعيد هذه الطريقة متحولاً من النمط View
-
كنا نحاول تخزينه في متحول من النمط
ImageView في الجانب الأيسر
-
لذا نحن بحاجة لقصر هذا الغرض من النمط View
إلى غرض من النمط ImageView
-
هذا الكود صحيح لأن الغرض View مع
ID icon هو غرض من ImageView
-
لذا لا بأس بقصره إلى
النمط ImageView
-
الآن يتم تقويم الجانب
الأيمن إلى ImageView
-
يمكننا تخزين ذلك في المتحول الموجود
على الجانب الأيسر
-
نمط البيانات لهذا التمحول هو ImageView
الآن كل شيء متطابق
-
و قد اختفى الخطأ
-
في السطر التالي، يمكننا استدعاء طريقة
من النمط ImageView
-
و هي الطريقة setImageResource
لهذا الغرض IconImageView
-
بقي خطأ واحد يخبرنا أن الطريقة لا تستطيع
تحليل الرمز logo
-
هذا لأنني فقط لم أقم بإضافة صورة تحمل
الاسم logo إلى تطبيقنا
-
إن أضفت ذلك، سيزول الخطأ، إذاً الكود
الذي لدينا هنا صحيح
-
وها هو الكود الصحيح حيث أجريت عملية
قصر على متحول من ImageView
-
وأخيراً، لدينا الكود رقم 4
-
قمت بلصق الكود هنا في "Android Studio"
و بشكل مفاجىء، لا توجد أخطاء
-
يحاول الكود العثور على view يحمل
الـ id الذي يساوي title
-
و الذي يجب أن يعيد View، و يتم تخرين هذا
الأخير في متحول من النمط TextView
-
للـTextView نمط بيانات
وهو عبارة عن View
-
وهذا يتطابق مع الجانب الأيمن، إذاً هذا
السطر من الكود كله صحيح
-
في السطر التالي نقوم بأخذ هذا الغرض
و الذي هوغرض من النمط View
-
سنقوم باستدعاء الطريقة setVisibility
لنطبقها عليه
-
تأخذ الطريقة وسيط دخل
واحد وهو View.GONE
-
يمكنني التحقق من الوثائق
حتى أؤكد هذا
-
في وثائق الصف View
يمكنني البحث عن
-
الطريقة setVisibility
-
أستطيع أن أرى أن الطريقة setVisibility
هي من طرق الصف View
-
و ستتطلب للدخل قيمة من int
تمثل حالة الرؤية
-
قيم الرؤية المتاحة هي VISIBLE و INVISIBLE
و GONE
-
بما أن الطريقة setVisibility هي طريقة
من الصف View
-
فهذا هنا استدعاء صحيح
-
ليس هناك حاجة لقصر هذا
المتحول إلى TextView
-
لأن الطريقة التي نقوم باستدعائها هي
طريقة من الصف View
-
الآن إن كنا نحاول استخدام طريقة
من الصف TextView
-
فسنكون بحاجة إلى قسر
المتحول إلى TextView
-
إذاً يجب أن تضع "no error"
كإجابة على هذا السؤال
-
لأن الطريقة setVisibility هي طريقة من View
و لا بأس إن أبقيناه غرضاً من View
-
كانت هذه الأسئلة صعبة
-
لا بأس إن لم تجب عليها بشكل صحيح
-
في الاختبار التالي، ستكون لديك فرصة
التدرب على هذا أكثر