• Home
  • Courses
  • Portfolio
  • Contact
    Tiger 4 CodeTiger 4 Code
    • Home
    • Courses
    • Portfolio
    • Contact

      Android اندرويد

      • Home
      • Blog
      • Android اندرويد
      • 25 -اندرويد – Fragments: التواصل مع بقية ال Fragments

      25 -اندرويد – Fragments: التواصل مع بقية ال Fragments

      • Posted by Schwarztiger
      • Categories Android اندرويد
      • Date March 22, 2013
      • Comments 0 comment
       

      ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

      اندرويد : Fragments: التواصل مع بقية ال Fragments

      السلام عليكم ورحمة الله وبركاتهnew prof

      سوف نتحدث في هذا الدرس عن آلية التواصل بين ال Fragments  مع الفعالية المستضيفة لها , وبين ال Fragments بين بعضهم البعض.

      الدرس قيم جدا ويحوي رغم قصره على كم كبير من المعلومات المفيدة فيما يخص ال Fragments ارجو لكم الفائدة.

      سوف نتعلم في هذا الدرس ما يلي :

      1. تعريف واجهة Define an Interface
      2. تحقيق الواجهة ( اي كتابة الكود اللازم لها)Implement the Interface
      3. نقل رسالة إلى ال Fragment , Deliver a Message to a Fragment

      لكي تستطيع اعادة استخدام ال Fragments  التي تمثل مكونات واجهة المستخدم UI components  , يتوجب عليك بناء كل fragments على شكل كينونة مستقلة بشكل كامل, مكون وحدوي modular component تقوم بتعريف تنسيقهاتها بنفسها بالاضافة إلى سلوكها.

      ما إن تقوم بتعريف هذه ال fragments  القابلة لاعادة الاستخدام , حتى يصبح باستطاعتك ارفاقهم مع اي فعالية activity  وربطهم مع منطق التطبيق لتحقق واجهة المستخدم المركبة المطلوبة.

      غالبا ما تحتاج إلى ان تتواصل وتتفاعل ال Fragments  مع بعضها البعض, على سبيل المثال لتغيير المحتوى اعتمادا على احداث المستخدم.

      تتم كل اساليب التواصل بين Fragments-to-Fragment من خلال ال Activity  المرفقين بها.

      ولا يتوجب ابدا ان تتواصل ال Fragments مع بعضها البعض بشكل مباشر.

      تعريف واجهة Define an Interface

      لكي نمكن ال fragments  من التواصل مع فعاليتها,بإمكاننا ان نعرف واجهة Interface  ضمن صف ال Fragment ونقوم بتحقيق implement هذا الصف ضمن الفعالية.

      تلتقط ال Fragment تحقيق الواجهة الخاصة بها ضمن مرحلة استدعاء التابع onAttach() من دورة حياة ال fragment  , ومن ثم يصبح باستطاعتها استدعاء توابع الواجهة لكي تتواصل مع الفعالية.

      فيما يلي مثال عن طريقة التواصل بين ال Fragment والفعالية Activity :

      public class HeadlinesFragment extends ListFragment {
      OnHeadlineSelectedListener mCallback;// Container Activity must implement this interface
      public interface OnHeadlineSelectedListener {
      public void onArticleSelected(int position);
      }@Override
      public void onAttach(Activity activity) {
      super.onAttach(activity);// This makes sure that the container activity has implemented
      // the callback interface. If not, it throws an exception
      try {
      mCallback = (OnHeadlineSelectedListener) activity;
      } catch (ClassCastException e) {
      throw new ClassCastException(activity.toString()
      + ” must implement OnHeadlineSelectedListener”);
      }
      }…
      }

      الآن اصبح بإمكان ال Fragment نقل الرسائل إلى الفعالية عبر استدعاء التابع onArticleSelected()  (أو اية تواقع اخرى ضمن الواجهة) باستخدام مستنسخ mCallback الخاص بالواجهة  OnHeadlineSelectedListener.

      على سبيل المثال, يتم استدعاء التابع التالي الموجود ضمن ال fragment  عندما ينقر المستخدم على عناصر القائمة.

      يستخدم ال fragment  واجهة الاستدعاء لينقل الأحداث إلى الفعالية الأب.

      @Override
      public void onListItemClick(ListView l, View v, int position, long id) {
      // Send the event to the host activity
      mCallback.onArticleSelected(position);
      }

      تحقيق الواجهة Implement the Interface

      لكي نستطيع استقبال استدعاءات الاحداث من ال fragment,  فإنه يتوجب على الفعالية activity التي تستضيف ال fragment ان تقوم بتحقيق Implement الواجهة المعرفة ضمن صف ال fragment.

      على سبيل المثال, تقوم الفعالية التالية بتحقيق الواجهة المعرفة في ال fragment  ضمن المثال السابق.

       

      public static class MainActivity extends Activity
      implements HeadlinesFragment.OnHeadlineSelectedListener{
      …public void onArticleSelected(int position) {
      // The user selected the headline of an article from the HeadlinesFragment
      // Do something here to display that article
      }
      }

      توصيل رسالة إلى ال Fragment , Deliver a Message to a Fragment

      بإمكان الفعالية المستضيفة لل fragment ان تقوم بتوصيل رسائل إلى ال fragment عبر التقاط مستنسخ ال Fragment باستخدام التابع findFragmentById(), ومن ثم تقوم بشكل مباشر باستدعاء التوابع العامة لهذا ال Fragment.

      على سبيل المثال, تخيل بأن الفعالية المبينة اعلاه قد تحتوي على fragment اخر يستخدم لعرض العنصر المحدد عبر المعطيات المعادة ضمن تابع الاستدعاء اعلاه. في هذه الحالة , بإمكان الفعالية تمرير المعلومات المستقبلة عبر تابع الاستدعاء إلى fragment  آخر والذي بدوره سيقوم بعرض العنصر المطلوب.

      public static class MainActivity extends Activity
      implements HeadlinesFragment.OnHeadlineSelectedListener{
      …

      public void onArticleSelected(int position) {
      // The user selected the headline of an article from the HeadlinesFragment
      // Do something here to display that article

      ArticleFragment articleFrag = (ArticleFragment)
      getSupportFragmentManager().findFragmentById(R.id.article_fragment);

      if (articleFrag != null) {
      // If article frag is available, we’re in two-pane layout…

      // Call a method in the ArticleFragment to update its content
      articleFrag.updateArticleView(position);
      } else {
      // Otherwise, we’re in the one-pane layout and must swap frags…

      // Create fragment and give it an argument for the selected article
      ArticleFragment newFragment = new ArticleFragment();
      Bundle args = new Bundle();
      args.putInt(ArticleFragment.ARG_POSITION, position);
      newFragment.setArguments(args);

      FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

      // Replace whatever is in the fragment_container view with this fragment,
      // and add the transaction to the back stack so the user can navigate back
      transaction.replace(R.id.fragment_container, newFragment);
      transaction.addToBackStack(null);

      // Commit the transaction
      transaction.commit();
      }
      }
      }

      وعند هذه النقطة نكون قد انتهينا من شرح المثال البرمجي الذي استمر معنا على ما يقارب الثلاث حلقات.

      وسنتوقف عند هذا القدر مع المعلومات حول ال Fragment  لنتحول إلى موضوع اخر مهم ألا وهو ” تخزين المعطيات” Saving Data
      وإلى ذلك الحين استودعكم الله والسلام عليكم ورحمة  لله وبركاته.

      المصطلح الترجمة

      implement

      تحقيق , اي كتابة الكود البرمجي اللازم

      Interface

      واجهة

      Instance

      مستنسخ

      modular component

      مكون وحدوي – ان جاز التعبير-

      Tag:Android, android BroadcastReceiver, android ContentProvider, android Intent, android operation system, Android Programming, Android system, android Temperature converter, AndroidManifest file, Building a Flexible UI using fragments, Communicating with other fragments, create fragment, Fragments, Supporting Different Devices, برمجة اندرويد, بناء واجهة مستخدم ديناميكية عبر استخدام Fragments, تشغيل الفعالية اندرويد, تطوير وبرمجة اندرويد, نظام اندرويد

      • Share:
      author avatar
      Schwarztiger

      Previous post

      24 -اندرويد - Fragments - بناء واجهة مستخدم مرنة Building a Flexible UI
      March 22, 2013

      Next post

      26 - حفظ المعطيات Saving Data
      March 23, 2013

      You may also like

      56 : اندرويد : استخدام “واجهة برمجة التطبيقات” API الخاصة بالنسخ الاحتياطي Backup
      20 August, 2013

        ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development اندرويد :  استخدام واجهة برمجة التطبيقات API الخاصة بالنسبخ الاحتياطي Backup السلام عليكم ورحمة الله وبركاته  سوف نتعلم في هذا الدرس مايلي : تسجيل التطبيق …

      56 : اندرويد : التزامن مع السحابة الالكترونية Syncing to the Cloud
      20 August, 2013

        ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development اندرويد :  التزامن مع السحابة الالكترونية Syncing to the Cloud السلام عليكم ورحمة الله وبركاته  سنتطرق ضمن هذه الحلقات إلى موضوع حديث نسبيا , الا …

      55 : اندرويد : ارسال طلبات عمل إلى الخدمة التي تعمل في الخلفية sending work request to the background service
      4 July, 2013

        ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development اندرويد :  ارسال طلبات عمل إلى الخدمة التي تعمل في الخلفية Sending work requests to the background service السلام عليكم ورحمة الله وبركاته سوف نتعلم …

      Leave A Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Search

      Latest Courses

      Android Development

      Android Development

      $950.00
      HTML Tutorial: HTML & CSS for Beginners

      HTML Tutorial: HTML & CSS for Beginners

      $800.00
      Learn WordPress Content Management System

      Learn WordPress Content Management System

      Coming soon
      logo-eduma-the-best-lms-wordpress-theme

      info@tiger4code.com

      Links

      • Courses
      • Portfolio

      Copyright 2019 | Educational, Web & Mobile Development Platform By Tiger 4 Code