Arabic subtitles

Casting with findViewById

Get Embed Code
13 Languages

Showing Revision 2 created 12/28/2015 by Fran Ontanaya.

  1. قمت بإضافة الكود الذي كنا
    نبحث عنه في تطبيقنا
  2. يقول
    View orderSummaryTextView = findViewById
  3. ثم نمرر في المصدر
    المعرف لـ order_summary_text_View
  4. و لكن هذا يسبب خطأ
    في "Android Studio" في السطر اللاحق
  5. إنه يقول بانه غير قادر على
    حل الطريقة setText
  6. إذا أضفت سطراً برمجياً آخر هنا
  7. يمكنني أن أريكن أنماط الطرق
    الصالحة على هذا المتحول
  8. لذا، أنشأنا المتحول
    orderSummaryTextView هنا
  9. وهو TypeView وكذلك
  10. في السطر التالي
    يجب أن كون قادرين على استدعاء الطرق فيه
  11. ولن إذا نظرتم إلى
    اقتراحات الإكمال التلقائي
  12. هذه الطرق هي حقيقة View methods
  13. لا يوجد طرق محددة بـ TextView
  14. على سبيل المثال، لا يوجد طريقة setText
  15. هذا هو السبب وراء ظهور خطأ
    هنا في الأسفل عندما نحاول ان نستدعي setText
  16. كما لا يمكنك تحديد حجم النص
    أو لونه أو أي من هؤلاء
  17. إذن أين هي كل هذه الطرق؟
  18. حسناً، المعنى هو أن TextView
    هو نمط محدد من View
  19. إذن إذا أردنا استدعاء طرق TextView
  20. على هذا الغرض يجب ان نتأكد
    أنع غرض من TextView
  21. حسناً
    الآن المتحول هو غرض TextView
  22. لكنني أحصل بعد ذلك على خطأ آخر
    يقول أنواع غير متوافقة، لأن TextView
  23. مطلوب على الجهة اليمنى
    لكننا نجد View عادية
  24. وهذا بسبب أن الطريقة
    findViewById ترجع View
  25. فكيف نوفق بينهما؟
  26. حسناً، بما أن TextView هي نمط محدد أكثر
    من الـ View أو بعبارة أخرى
  27. يعتبر TextView صف فرعي من View
    يمكننا حقيقة استخدام شيء يسمى القسر
  28. يعني القسر في جافا أنه يمكننا
    أخذ الـ View المرجعة من هذه الطريقة
  29. والتعامل معها حقيقة كـ TextView
  30. إذن أصبحت هذه الجهة اليمينية
    حقيقةً غرض من TextView
  31. و بعدها يمكننا حفظه داخل
    هذا المتحول orderSummaryTextView
  32. أعلم أن هذا يبدو فعلاً مستحوذا
    لأنني ذكرت منذ قليل
  33. طناً من المفاهيم الجديدة
  34. اسمحوا لي أن أجرب ان أشرح مرة أخرى
  35. تحول الطريقة
    findViewById غرضاً من النمط View
  36. من خلال كتابة هذه الملاحظة
  37. قوسين بينهما
    نمط بيانات الغرض المطلوب
  38. نحن نقوم بقسر هذا الـ View إلى TextView
  39. إذن كل التعبير هنا
    يقيم من أجر غرض TextView
  40. ثم يمكننا تخزين هذا ضمن المتحول
    في الجهة اليسرى
  41. وهو orderSummaryTextView
    وهو من النمط TextView
  42. الآن في الأسطر اللاحقة يمكننا
    استدعاء طرق TextView على هذا الغرض
  43. هل ترى الىن كيف أن
    جميع طرق النص تظهر هنا؟
  44. setAllCaps و setTextSize والكثير
  45. لذا يمكنني أن امحو هذا الآن
    لأن setText يبجب أن تعمل
  46. وليس هناك المزيد من الأخطاء
  47. لذا إن أردنا أن نكون قادرين على
    استدعاء طرق TextView
  48. يجب أن يكون لدينا غرض من TextView
  49. للحصول على غرض من TextView
    علينا أن نستدعي findViewById
  50. و من ثم قسر هذا
    الغرض من View إلى TextView
  51. السبب وراء نجاح عملية القسر
  52. هذا الـ View هنا في التسلسل الهرمي لـ View
    هو حقيقةً TextView
  53. إذا حاولنا قسره لشيء ما
    كـ RadioButton، لن ينجح ذلك
  54. لأن orderSummaryTextView
    هو حقيقةً TextView لذا
  55. علينا أن نقسره إلى
    نوع مناسب
  56. بالمثل، في الطريقة displayQuantity
    نستدعي الطريقة findViewById
  57. و نمرر في مصدر المعرف
    من أجل quantityTextView
  58. هذا يرجع View
    ونقوم بقسره إلى TextView
  59. ونستطيع أن نخزنه داخل هذا
    المتحول المدعو quantityTextView
  60. هذا المتحول من النوع TextView و لذا
  61. يمكننا استدعاء طرق TextView
    عليه في الأسطر اللاحقة كــ setText
  62. واليكم كود MainActivity
    المحدث باستخدام القسر
  63. يمكننا أن نقسر هذه الـ Views إلى
    TextViews حيث يمكننا تخزينها بمتحولات
  64. من النوع TextView
    حيث أنه متحولات MainActivit في هذه القائمة
  65. الآن quantityTextView
    و orderSummaryTextView هما من
  66. النوع TextView يمكننا استدعاء
    طرق TextViews عليها
  67. و لسنا محدودين في
    التعامل معهم كـ Views
  68. و الآن يمكننا أن نستدعي الطرق
    المخصصة لـ TextViews على هذه المتحولات
  69. على سبيل لمثال يمكننا أن نستدعي setText
    على orderSummaryTextView
  70. ويمكن أن نستدعي setText
    على quantityTextView
  71. كما ترون
  72. عليك أن تكون حذراً حول أي نمط
    بيانات مستخدم وأين
  73. حتى الآن، عندما قمنا باستدعاء الطرق
    لم نعر اهتماماً للقيمة المرجعة
  74. لأن الطريقة setText حقيقةً
    لا تملك قيمة مرجعة
  75. الشيئ نفسه من
    مع الطريقة imageView.setImageResource
  76. هذه لاتملك قيمة مرجعة
  77. ولكن طرقأً أخرى
    قد تملك قيماً مرجعة
  78. على سبيل المثال، لدينا الطريقة getTextSize
    في الصف TextView
  79. هذه ترجع عدد صحيح لذا
  80. يمكننا تخزين نتيجة هذه الطريقة في
    متحول يدعى size من النمط int
  81. إليكم طريقة أخرى
    تملك قيمة مرجعة
  82. يمكنك استدعاء الطريقة grtHeight
    في الصف Button
  83. وهذه تعيد قيمة صحيحة، لذا
    يمكنك تخزينها في متحول
  84. إذا حاولت تخزين هذه النتيجة
    داخل سلسلة، مثلاً
  85. ستحصل على خطأ
    لأن هذه الطريقة ترجع عدداً صحيحاً
  86. لمعرفة أي نمط بيانات يجب أن
    يمرر داخل الطريقة و أي نمط
  87. بيانات يعاد من الطريقة
    عليك أن تتحقق من التوثيق
  88. مثلاً، في الصف TextView
  89. إذا قمت باستدعاء أي من هذه الطرق
    ستعيد لك قيمة من النمط int
  90. أنماط البيانات للقيم المعادة
    في العمود هنا في الجهة اليسرى
  91. لطرق أخرى، قد تحصل على void
    كقيمة معادة أو boolean
  92. الذي لم نتعلم عنه بعد
    أو float أو long إلى آخره
  93. صفحة التوثيق هذه تظهر أيضاً
    ما هي انماط البيانات المتوقعة
  94. لمدخلات كل طريقة
  95. مثلاً، الطريقة setTextColor تتطلب
    عدداً صحيحاً كمدخل
  96. و القيمة المعادة void
    لذا لا يوجد قيمة معادة
  97. لذا تحقق من التوثيق لمعرفة
    أي نمط بيانات هو المتوقع
  98. وإلا ستواجه أخطاء
    قي "Android Studio" تقول
  99. أنماط البيانات غير متطابقة
  100. الآن حان دورك للتمرن
  101. وفيما يلي أربعة أمثلة كود مختلفة
  102. بعض الكود قد يحوي أخطاء تعود
    لعدم تطابق أنماط البيانات
  103. إذا وجدت خطأ
  104. صف كيف يمكن لك أن تصلحه
    عن طريق الكتابة في المربعات المقدمة
  105. عدا ذلك، يمكنك كتابة لا أخطاء
    إذا كان الكود خالٍ من الأخطاء تماماً
  106. سيشكل هذا الاختبار تحدياً
    لأننا غطينا
  107. الكثير من المفاهيم
    وهذا الكود لا يزال جديداً عليك
  108. خذ وقتك وتحقق
    من توثيق هذه الطرق
  109. تحقق من أن قيم الدخل
    والخرج قيم صحيحة
  110. انه، إذا كنا نقوم بالإعلان عن المتحولات
    فإننا نستخدم نمط int هنا
  111. ابحث أيضاً عن التوثيق من أجل
  112. استدعاءات هذه الطرق للتأكد
    من أننا نستخدم هذه الطرق بشكل صحيح