كيفية نقل متغير من جزء إلى نشاط في Android؟

قصة حول كيفية نقل المعلومات في Android من جزء (جزء) إلى نشاط (نشاط). ستكون المعلومات مفيدة للمبتدئين (الصغار) ، الذين يتقنون البرمجة لنظام Android ، ومن غير المرجح أن تكون مثيرة للاهتمام بالنسبة للوسطاء وكبار السن.

إطلاق IDE (بيئة التطوير المتكاملة) Android Studio . إنشاء مشروع جديد: ملف -> جديد -> مشروع جديد. حدد "نشاط فارغ" ، وانقر فوق "التالي".



املأ الحقول "الاسم" ، "اسم الحزمة" ، "حفظ الموقع".



سيقوم IDE تلقائيًا بإنشاء ملفين: "MainActivity.java" في دليل "java / [اسم الحزمة]" ، "activity_main.xml" في دليل "res / layout".





يحدد ملف Java ما الذي يفعله التطبيق ، xml - ما يبدو عليه. إنها قليلة جدًا حتى الآن ، فقط "setContentView (R.layout.activity_main)؛". يخبر هذا السطر التطبيق باستخدام تخطيط activity_main.xml عند بدء التشغيل. ونظرًا لأن التخطيط يحتوي على عنصر واجهة مستخدم واحد فقط من نوع "TextView" مع النص "Hello World!" ، فإن تطبيقنا أيضًا يبدو متواضعًا للغاية.



في مجلد المشروع ، قم بإنشاء جزء باسم "Fragment1".





سيقوم IDE بإنشاء ملفين: "Fragment1" و "fragment_fragment1.xml".





افتح ملف تخطيط الأجزاء وحذف عنصر واجهة المستخدم "TextView" الذي لا نحتاج إليه بخط ترحيب.



قم بالتبديل إلى وضع التصميم واسحب الزر (الزر) إلى التخطيط.



سوف IDE إنشاء زر مع معرف "button1".



الآن قم بتحرير تخطيط النشاط الرئيسي ، أي ملف "activity_main.xml"



حرك عنصر واجهة النص أعلىًا وأضف الجزء الذي أنشأناه إلى التخطيط (للقيام بذلك ، اسحب العنصر "<>" إلى التخطيط ، وحدد "Fragment1" وانقر فوق "موافق").



في تخطيط النشاط في إعدادات التجزئة ، اضبط layout_height = "wrap_content" وحرر موضعه حسب ذوقك. سنقوم أيضًا بتغيير معرف حقل النص إلى "textReport" ، والجزء إلى "fragmentWithButton".



قم بتشغيل المحاكي (إزاحة + F10) وشاهد ما حدث.



يعرض التطبيق نقش "Hello World!" وزر زر. يتم عرض النقش من النشاط ، ينتمي الزر إلى الجزء . يتم الضغط على الزر ، ولكن حتى الآن ليس له أي تأثير. دعونا نحاول برمجة النقش لعرض عدد مكابس الأزرار. للقيام بذلك ، سنحتاج إلى إرسال رسالة حول النقر على الزر من الجزء إلى النشاط .

أولاً ، سنقوم بتدريس الجزء لحساب عدد نقرات الأزرار. افتح الملف "Fragment1.java".



أضف المتغير "عداد". في طريقة "onCreateView" ، والتي تسمى مباشرة بعد إنشاء الجزء ، قم بإنشاء زر "مستمع". سيتطلب IDE تطبيق View.OnClickListener - موافق (Alt + Enter). لنقم بإنشاء (إعادة تعريف) طريقة onClick ، ​​والتي ستزيد من قيمة المتغير "counter" مع كل نقرة على الزر وعرض رسالة منبثقة.



دعونا التحقق في المحاكي (مرة أخرى Shift + F10) كيف يعمل. سيؤدي الضغط على الزر إلى ظهور الرسالة المنبثقة "عدد نقرات الزر: ..." في أسفل شاشة التطبيق.



عظيم ، والمضي قدما. هدفنا الرئيسي هو نقل المعلومات (في هذه الحالة ، عدد نقرات الأزرار) من نسخة الجزء إلى مثيل النشاط. للأسف ، يتم تنظيم دورات حياة الأنشطة والشظايا بحيث لا يسمح Android (تقريبًا) للنشاط وجزء بالاتصال مباشرة ، لذلك نحن بحاجة إلى واجهة وسيطة. دعنا نطلق عليه "ساعي البريد" (ساعي البريد). يمكن إنشاء الواجهة إما في ملف منفصل أو في ملف برمز جزء ؛ سوف نختار الخيار الأول. ستحتوي واجهة ساعي البريد لدينا على طريقة واحدة مجردة (بدون "نص") لـ "fragmentMail".



سنستخدم المتغير "numberOfClicks" كـ "مغلف" لنقل الرسائل من الجزء إلى النشاط.

افتح الملف برمز النشاط "MainActivity.java". كما نتذكر ، يبدو كما يلي:



ننفذ واجهة Postman ونضيف طريقة واجهة fragmentMail إلى النشاط ، ونعيد تعريفه ( Override ).



الآن ، بمجرد أن يرى النشاط "قيمة جديدة في المتغير" numberOfClicks "، سيعرض رسالة محدثة في حقل النص textReport.

لكننا ما زلنا بحاجة إلى "وضع الرسالة في الظرف" ، أي تمرير إلى المتغير عدد النقرات على الزر. ونحن نفعل هذا في رمز جزء. افتح الملف "Fragment1.java".

D̶o̶b̶a̶v̶l̶ya̶e̶m̶ الخامس ̶p̶o̶d̶p̶i̶s̶̶ ̶k̶l̶a̶s̶s̶a̶ ̶i̶m̶p̶l̶e̶m̶e̶n̶t̶a̶ts̶i̶yu̶ ̶i̶n̶t̶e̶r̶f̶e̶y̶s̶a̶ ̶ «ساعي البريد». IDE ̶p̶o̶t̶r̶e̶b̶u̶e̶t̶ ̶p̶e̶r̶e̶o̶p̶r̶e̶d̶e̶l̶i̶t̶̶ متود ̶i̶n̶t̶e̶r̶f̶e̶y̶s̶a̶ ̶ «̶f̶r̶a̶g̶m̶e̶n̶t̶M̶a̶i̶l̶» ̶، ̶ لا ̶d̶e̶l̶a̶t̶̶ الخامس NOM بلدي ̶n̶i̶ch̶e̶g̶o̶ NE ̶b̶u̶d̶e̶m̶، ̶ ̶p̶o̶e̶t̶o̶m̶u̶ ̶o̶s̶t̶a̶v̶i̶m̶ الأنا TELO ̶p̶u̶s̶t̶y̶m̶. [تم الحذف ، انظر "الملاحظة 1 بتاريخ 20/2099"]

سنحتاج إلى رابط لمثيل النشاط. سنحصل عليه عندما يتم إرفاق جزء إلى نشاط مثل هذا:


في طريقة "onClick" (نفس الطريقة التي يتم استدعاءها عند النقر على زر الجزء الخاص بنا) نضيف مكالمة إلى الواجهة من مثيل النشاط.



يبدو الرمز النهائي للجزء بعد حذف التعليقات (للاكتناز) كما يلي:


الآن تحسب شظايانا عدد نقرات الأزرار ، وتعرضها في رسالة منبثقة ، ثم تستخدم واجهة Postman لنقل قيمة متغير العداد إلى الرقم المتغير OFClicks ، والذي يعمل بمثابة حاوية مظروف لإرسال الرسائل من الجزء إلى النشاط. النشاط ، تلقي رسالة جديدة ، يعرضها على الفور في حقل نص عنصر واجهة تعامل المستخدم مع معرف "textReport". الهدف يتحقق!


ملاحظة: يمكن أن يؤدي تغيير لغة البرمجة من Java إلى Kotlin إلى تقليل جزء الشفرة بشكل كبير:



PPS: قم بتنزيل ملفات المشاريع هنا: Java ، Kotlin .

الملاحظة 1 من 20/20/2019:


تمت إزالة تنفيذ واجهة Postman من رمز الجزء.
جزء يعمل مع واجهة من خلال النشاط الذي تم بالفعل تنفيذ هذه الواجهة.
شكرا mikaakim للتعليق .
يمكن تنزيل الملفات التي تم تحديثها من github على الروابط أعلاه.

Source: https://habr.com/ru/post/ar448744/


All Articles