Linking Activities Using Intents

اي تطبيق اندرويد على الاغلب سيتكون من عدة واجهات Activity  بحيث يتم الانتقال من وجهة الى اخرى اثناء استخدام التطبيق , مثال اذا كان هنالك تطبيق اخبارا وكان في الواجهة الرئيسية قائمة عناوين الاخبار واردنا تصفح خبر معين فعند النقر على احدى العناوين هنا يجب تشغيل واجهة جديدة ونقل العنوان وتفاصيل الخبر الى صفحة الخبر لواسطة ال Intent .

ما هو ال Intent  :

هو عبارة عن object يستخدم للتواصل بين مكونات التطبيق لطلب اجراء معين او لتبادل البيانات , يمن تخيل ال Intent انها رسالة يتم ارسالها الى الواجهات لطلب اجراء ما او لتبادل المعلومات .

هنالك ثلاث استخدامات اساسية لل Intent :

  • تشغيل واجهة Activity واستقبال النتائج منها : بحيث يمكن تشغيل واجهة جديدة عن طريق تمرير Intent الى دالة  ()startActivity بحيث يكون ال Intent يحمل اسم الواجهة المراد تشغيلها واي بيانات اخرى نحتاجها في الواجهة الجديدة .

 

  • تشغيل خدمة معينة Services : الخدمات هي مكون اساسي من مكونات تطبيق الاندرويد يستخدم لتنفيذ مهام معينة في الخلفية Background بدون تفاعل من المستخدم , ويتم تشغيل ال Services عن طرق دالة ()startService واللتي يمرر لها كائن من نوع Intent يحدد الخدمة المراد تشغيلها .

 

  • ارسال منشور (Broadcast Deliver) المنشور ( Broadcast ): هي رسالة يتم ارسالها إلى تطبيقات مختلفة. على سبيل المثال عند إعادة تشغيل الجهاز boot  يقوم نظام أندرويد تلقائيا بارسال رسالة من نوع (Intent)  وذلك لإعلام كل البرامج المعنية بحدث boot حتى تنفذ بناءً عليه إجراءات أخرى.

الشكل التالي يوضح مبدأ عمل ال Intent في تشغيل واجهة جديدة :

كيف ننتقل من واجهة الى اخرى بإستخدام ال Intent ؟؟!!

اولاً : ننشئ تطبيق اندرويد جديد كما تعلمنا في الدروس السابقة .

عند انشاء مشروع جديد يكون فيه واجهة وحد فقط وهي Main Activity

ثانياً : علينا انشاء واجهة جديدة : في ملف Layout ننقر الزر اليمين على الماوس وننشئ new Activity ونعطيها اسم  Activity two

ثالثا : نقوم بوضع Button في الواجهة الاولى بحيث انه عندما ننقر على هذا الزر ننتقل للواجهة الجديدة .

في داخل دالة هذا الزر نقوم بتعريف اوبجكت من نوع Intent كما يلي :

;(Intent = new Intent(this, Activitytwo.class
;(startActivity(intent

في الكود السابق عند النقر على الزر سيتم تنفيذ هذا الكود
بحيث انشأنا  object من نوع Intent واخبرناه ان انتقل من هذه الواجهة الاولى this الى الواجهة الجديدة Activity two ” هنا حددنا له المسار ”
ثم ممرنا الملعومات الى دالة startActivity محملة بمعلومات هذا ال Intent .

اذا اردنا ان ننقل بعض المعلومات في هذا ال Intent :

بعد تعريف Object من نوع  Intent نحمل في هذا ال intent البيانات كما يلي :

;(Intent.putExtra(“name”,”Ali”

هنا وضعنا داخل ال Intent معلومات الاسم بحيث يحمل  العنصر الاول  key  والعنصر الثاني ال  data فيصبح الكود النهائي هكذا :

;(Intent = new Intent(this, Activitytwo.class
;(“Intent.putExtra(“name”,”Ali
;(startActivity(intent