Lesson 15


بسم الله الرحمن الرحيم

والصلاة والسلام على سيدنا محمد صل الله عليه وسلم

إن شاء الله النهارده هنكمل كلامنا الأول عن ال Explicit Intent ثم ننتقل للنوع الثاني من ال Intent ويُسمي  (Implicit Intent) .

-        Explicit Intent : فى الدرس السابق تحدثنا كيف يمكننا الانتقال من صفحة داخل البرنامج إلى صفحة أخري داخل البرنامج أيضا .

-        سنكمل فى هذا الدرس كيف يمكننا الانتقال لصفحات اخري أيضاً داخل البرنامج ولكن مع إمكانية الرجوع للصفحة التي تم الإنتقال منها وهي على نفس حالتها بمعنى لو فيه اي قيم كانت موجوده فى الصفحة الأولي لما نرجعلها نلاقيها موجودة أى ان البرنامج لا يبدأ الصفحة من الأول ويحذف هذه القيم  سنوضح هذا الشرح بمثال .

-        نفس مثال الدرس السابق :

-         عندنا activity فيها EditText و Button 

-         بنكتب اي اسم فى ال EditText ثم نضغط على ال Button

-         عند الضغط على ال Button يذهب البرنامج إلى Activity  اخري داخل ال application ثم نجد فى الصفحة التانية مكتوب

  Hello + our name ""

-        الجزء الإضافي فى هذا المثال إضافة Button  Backفى ال Activity الثانية ووظيفه يرجعنا إلى ال Activity الأولي وهى على الحالة التي تركناها عليها . المثال موجود بالصور فى الدرس السابق ، الجزء الإضافي هو الذي سيتم شرحة :

1-   فى ال Activity  الاولي عند الضغط علي Next Button يتم وضع هذا الكود

 
-         الاختلاف بين هذا الكود فى درس اليوم والدرس السابق هو السطر الموجود داخل المربع الاحمر ، فى الدرس السابق كان يوجد startActivity(intent) وهذه ال Method مسئولة عن الانتقال إلى Activity اخري ولكن دون انتظار اى نتيجة من هذه ال Activity ، أما هذا السطر startActivityForResult(intent,Request code)

فهو مسئول عن الانتقال إلي Activity اخرى ولكن فى انتظار نتيجة من ال Activity الاخري وهذه ال Method لديها 2 parameters ، الاول ال intent  اللى موضحين فيه ال Activity الحاليه وال Activity التي سيتم الانتقال إليها ، والثاني Request code وهذا عبارة عن Integer Number احنا اللي بنحدده مثال لو لدينا اكتر من Activity  نريد الانتقال اليهم سنكتب لكل Activity ال intent الخاص بيها ونعطي لكل واحدة Request code مختلف مثلا 1 ،2،3   وفى حالة استرجاع اى نتيجة من ال Activity الاخري سيتم تحديد ال Activity الاخري عن طريق ال Request code .

2-    يتم عمل override لل method الموجوده فى الصورة التالية فى ال Activity الاولي ايضاً :


 
-    onActivityResult هذه ال method يجب عمل override لها ووظيفتها عمل اي عملية نحتاجها بعد الرجوع مباشرة من ال Activity الثانية إلى ال Activity الاولي

-    request code : هو القيمة التي كتبناها داخل startActivityForResult() وهي قيمة نوضح بها إلي اي Activity انتقلنا

-    result code : وهذه قيمة نستقبلها من ال Activity الثانية وسيتم شرحها بالتفصيل عند شرح المتغيرات التي ستحدث ايضاً فى ال Activity الثانية

-   data : وهي تمثل ال intent التي سوف ترسله ال Activity الثانية إلى ال Activity الاولي كنتيجه للرد .

 

3-   في الصورة التالية شكل ال layout الخاص بال Activity التانية  حيث تم إضافة Back Button وهو المسئول عن العودة لل Activity الاولي




 
4-  فى الصور التالية يوجد الكود اللى هنكتبه عند الضغط على Back button


 
 
-    ال intent اللى فى السطر الاول داخل المستطيل الاحمر بنكتب داخله ايضاً ال Activity الحاليه وال Activity الاولي التي نريد العودة إليها
-    setResult(result code , intent) هذه ال method مسئولة عن العوده إلى ال Activity الاولي  وهي تحتوي علي 2 parameters ، الاول result code وهو Integer Number احنا اللى بنحدد القيمة الخاصة بيه ، مثال فى حالة ان لدينا اكتر من حالة فى هذه ال Activity ولكن فى كل حاله تتم العودة إلى ال Activity الاولي ولكن ب result code مختلفة و فى ال Activity الاولي  فى onActivityResult method يتم عمل Check على ال result code وفي كل قيمة  يتم عمل العملية التي نريدها  مثال :
-   لدينا اكتر من Button فى البرنامج وكل Button يعود إلى ال Activity الاولي ولكن اول Button يعود ب result code يساوي 1 وال Button الثاني يعود ب result code  يساوي 2 ، فى ال Activity الاولي بنعمل Check على ال result code فى حاله انه يساوي 1 نعمل اى حاجه مثلا نُظهر رساله ، فى حالة انه يساوي 2 نعمل حاجه أخري وهكذا ، طبعا ً احنا بنشرح Concept بس وكل واحد يستخدمه علي حسب احتياجاته .
-   finish() : عبارة عن method يجب كتابتها بعد ال setResult method ووظيفتها غلق ال Activity التانية حتي تظهر ال Activity الاولي
-  الفرق بين اننا نستخدم هذه الطريقه او ان نستبدل setResult بأننا نكتب startActivity() ونحذف finish() ، ان في هذه الطريقه اللي استخدمناها سوف نجد القيمة المكتوبة فى ال EditText فى ال Activity الاولي زي ما هي ، لكن فى الطريقة التانية سوف نجد ال EditText لا يحتوي علي شئ وهذا بسبب ان ال Activity بتبدأ من الاول  . طبعا لازم نجرب بنفسنا الطريقتين عشان المعلومة تثبت اكتر
-   وبهذا المثال السابق نكون انتهينا من ال Explicit intent وفى الفقرة القادمة سوف نتكلم عن النوع الثاني من ال intent وهو ال implicit intent

-  Implicit Intent 

· يوجد اكتر من نوع فى ال implicit intent :


-  اولاً : اننا نستطيع من خلال برنامجنا فتح برنامج آخر مثال :

اننا نفتح call application من خلال برنامجنا

n    نعمل Call button فى ال layout ونكتب هذا الكود عند الضغط على هذا ال button :


n    نكتب هذا السطر فى ال manifest file :

 
 





 -    مثال آخر على هذا النوع اننا نفتح URL من خلال برنامجنا
n    نكتب هذا الكود الموجود فى الصورة التالية :
           Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com");                                          
             startActivity(i)
-         ممكن ناخذ بعض الامثله تفكروا فيها شوية :
1-    Send Mail
2-   Send SMS
3-   Open Camera from my application and return image
-         ثانياً : وده نوع آخر من ال implicit intent لكن سنكمله فى الدرس القادم إن شاء الله ولكن مضمونه يتكلم عن اننا نستطيع فتح البرنامج بتاعنا من آخر خارجي ، يعني عكس النوع الاول مثال :
-         فى حالة فتح URL الموبايل يعطينا كل البرامج المتاحة لنا فى الموبايل للتصفح عبر الانترنت ، سنتعلم فى الدرس القادم كيفية إظهار البرنامج الخاص بنا كمتصفح أى فتح البرنامج بتاعنا من خلال برنامج آخر خارجي .
-         بكده نكون انتهينا من درس اليوم ويارب تستفيدوا منه
السلام عليكم ورحمة الله وبركاته




 

 
 






 
 

 

 

1 comment:

  1. ماشاء الله عليك كمل انت افضل من ناس بكتير

    ReplyDelete