سلسلة تعليم برمجة تطبيقات الأندرويد (الدرس التاسع عشر) - العلم نور

جديد

{ وَقُلْ رَبِّ زِدْنِي عِلْمًا }

السبت، 18 مايو 2019

سلسلة تعليم برمجة تطبيقات الأندرويد (الدرس التاسع عشر)


سلسلة تعليم برمجة تطبيقات الأندرويد
الدرس التاسع عشر

سنتابع في سلسلتنا التعليمية لبرمجة تطبيقات الأندرويد وسنتعلم في درسنا اليوم كيف نقوم بالقراءة من الحقل والكتابة إليه عبر برنامج بسيط لإجراء عملية التكعيب فهل أنتم مستعدون؟! إن كانت الإجابة نعم فهي بنا ...

لنفتح برنامج أندرويد استديو ولننشأ تطبيق جديد نسميه MathExample كما في الصورة التالية:



ولنبدأ مباشرة بإضافة العناصر المناسبة إلى الواجهة activity_main.xml كما يلي:
·      عنصر علامة التسمية Label لكتابة عبارة الإدخال للمستخدم.
·      عنصر الحقل للقيمة المدخلة EditText.
·      عنصر الزر من أجل العملية الحسابية Button.
·      عنصر علامة التسمية Label من أجل النتيجة.
·      عنصر الحقل EditText من أجل إظهار النتيجة.

وكل ما سبق موضح في الصورة التالية:



ولا بد من التنويه إلى ما يلي:
1- العنصر Label من النوع Medium Text.
2- العنصر EditText من النوع Plain Text.

الآن وبعد أن أنشأنا الواجهة الرسومية لننتقل إلى الكود البرمجي ولنقم بتعريف عنصر الزر وإضافة الحدث له وفق التعليمتين التاليتين:
Button b=(Button)findViewById(R.id.button);
b.setOnClickListener(
this);

وكما تعلمنا في الدروس السابقة فإنه يتوجب علينا إضافة الطريقة onClick() لتظهر كما يلي:
@Override
public void onClick(View v) {
}

وكل ما نريد تنفيذه من الآن وصاعداً سنكتبه في الطريقة onClick() ولهذا الغرض سنعرف العناصر التي سنتعامل معها كما يلي:
EditText e1=(EditText)findViewById(R.id.editText);
EditText e2=(EditText)findViewById(R.id.
editText2);

ولاحظوا أننا لم نعرف سوى الحقول فقط لأن علامات التسمية دورها إظهار عبارات معينة للمستخدم وهذه العبارات لن تتغير في التنفيذ لذلك لسنا بحاجة إلى تعريف هذه العناصر برمجياً واكتفينا بتعريف الحقول فقط لأننا سنتعامل معها سوى للقراءة أو للكتابة، ولتحقيق المطلوب سنقسم التنفيذ إلى ثلاث مراحل:
1- مرحلة قراءة القيمة التي يدخلها المستخدم من حقل الإدخال (الحقل الأول).
2- مرحلة إجراء العملية الحسابية على القيمة المدخلة وحساب الناتج.
3- مرحلة إظهار النتيجة النهائية في الحقل المخصص للإظهار.

لنبدأ بالمرحلة الأولى:
نريد قراءة الرقم الذي يدخله المستخدم وتخزينه في متحول لذلك سنعرف متحول وليكن x من النوع int الذي يدل على العدد الصحيح وذلك كما يلي:
int x;

وهنا لدينا مشكلة بسيطة وهي على الشكل التالي:
القيمة المدخلة في الحقل سيعتبرها المترجم (Compiler) سلسة محرفية String وذلك بغض النظر عما سيدخله المستخدم ومعنى ذلك أنه حتى لو أدخل المستخدم عدداً صحيحاً فسيتم قراءته كسلسلة حرفية فما الحل إذاً؟!

الحل هو تحويل القيمة المدخلة إلى عدد صحيح عبر استخدام الطريقة parseInt() والتي يتم استدعاؤها مع الصف Integer كما يلي:
Integer.parseInt(value)

وبتطبيق ما سبق في الكود البرمجي الخاص بنا فإننا نكتب ما يلي:
x=Integer.parseInt(e1.getText().toString());

وما هو مكتوب ضمن القوسين يعبر عن قراءة القيمة المدخلة من الحقل وضمان أنها سلسة محرفية عبر الطريقتين getText() التي تقرأ القيمة من الحقل والطريقة toString() التي تضمن أن المدخل سلسة محرفية وبدونها سيعتبر المدخل من النوع EditText وبالتالي لا يمكننا التعامل معه.
ننتقل الآن إلى المرحلة الثانية عبر تعريف متحول للنتيجة وحساب مكعب العدد المدخل كما يلي:
int res;
res=x*x*x;

ولم يبقى أمامنا سوى إظهار النتيجة عبر التعليمة setText() التي سنستخدمها مع الحقل الثاني كما في الكود التالي:
e2.setText(res+"");

وحتماً أغلبكم سيتساءل عن سبب وجود علامتي التنصيص في الطريقة مع إشارة الزائد السبب بسيط جداً وهو أن الطريقة setText() لا تقبل سوى النوع String والمتحول res من النوع int لذلك استخدمناها كأسلوب للتحويل بينهما وبدونها سيظهر خطأ اثناء التنفيذ ولن يعطينا المترجم أي خطأ عند الكتابة (قبل التنفيذ) وهذا النوع من الأخطاء يسمى Run Time Error.

أتمنى أن تكونوا قد استفدتم من هذا الدرس ونلقاكم إن شاء الله في الدروس القادمة.



ليست هناك تعليقات:

إرسال تعليق