اندرويد للمبتدئين 10-onActivityResult



بعد ان ارسلنا البيانات الي الActivity الثانية  وسنقوم بالعمليات عليها سنقوم بارجاع بيانات جديدة للActivity الاولي لاستخدامها هناك

كمثال بسيط مثلا في الالعاب او في اي تطبيق يريد منك ان تفتح صفحته الخاصة علي الفيس او علي موقعه الرسمه علي انك اذا فعلت ذلك سيفتح لك مستويات جديدة في اللعبة

هنا التطبيق ارسل بيانات الي الActivity بها بياناتك الشخصية(وهذا ما كان في الدرس السابق) ليسجلها في الموقع ثم سيعود لك بالبيانات للمستويات الجديدة للعبة (وهذا ما سنتعلمه في هذا الدرس)

كما علمنا في السابق انه اذا اردنا تشغيل Activity اخري نقوم بانشاء Intent ونحدد الActivity (سواء بال Action ,Data,Category,Name of component) ثم نقو بارسال البيانات ثم نشغلها عن طريق startActivity method هنا سيقوم بتشغيل الActivity دو انتظار بيانات منها ولكي نستقبل البيانات نقوم باستخدام startActivityForResult وهنا سينتظر حتي يعود بالبيانات ونستخدم داله onActivityResult للتعامل مع هذه البيانات

startActivityForResult (intent, requestCode)
onActivityResult (int requestCode, int resultCode, Intent data)

ال Intent الاولي وده اللي بنادي بيه علي الActivity الاخري

الrequestCode وده رقم انا بميز بيه ال Activity اللي راجعه زي ID كده ولنفترض ان عندي 3Activity الاولي تفتح الاثنين الاخريين وتنتظر منهم بيانات في هذه الحالة كل Activity من الاثنين هيكون لها requestCode خاص بها
startActivityForResult(firstIntent , 1)
startActivityForResult(secondIntent , 2)
وداخل دالة onActivityResult بشوف اي Activity هي اللي راجعة بالبيانات

onActivityResult(int requestCode, int resultCode, Intent data)
}
      if (requestCode == 1) {
نفذ الكود ده
} else if (requestCode == 2) {
نفذ الكود ده
        }

الresultCode وهي القيمة اللي بترجع من الActivity الثانية لكي نعرف هل العملية نجحت او لا
setResult(RESULT_OK, Intent)
RESULT_OK  بترجع ب -1 وده معناه ان العمليه نجحت
RESULT_CANCELED بترجع ب0 ومعناه ان العملية اتلغت واستخدامها في الكود بالشكل ده

        if (requestCode == 1) {
if (resultCode == RESULT_OK) {
اذا تمت نفذ هذا الكود
}
if (resultCode == RESULT_CANCELED) {
اذا اتلغت نفذ هذا الكود
}
} else if (requestCode == 2) {
if (resultCode == RESULT_OK) {
اذا تمت نفذ هذا الكود
}
if (resultCode == RESULT_CANCELED) {
اذا اتلغت نفذ هذا الكود
}
}

الIntent الثانية وهو الIntent اللي راجع بالبيانات من الActivity الثانية وبستخلص منه البيانات عن طريق data.getStringExtra(name) او ايا كان نوع البيانات Int او bool

نرجع لبرنامجنا
الدرس السابق ارسلنا البيانات في هذا الدرس سنقوم بعمليه علي هذا البيانات ونعود بالبيانات الجديده
احنا بعتنا الsalary الخاص بالموظف هنخم منه الضرائب ونرجع صافي المرتب
ولنفترض ان الضرائب ماشيه بالشكل ده
لو المرتب >2000 لا تحتسب ضرائب
لو <2000 واقل من >4000 ضرائب 10%
لو > 4000 ضرائب 20%
بعدا هبدأ Intent جديده لكي ارسل معها البيانات بهذا الشكل
Intent i = new Intent    
i.putExtra("valueOfSalary", netSalary);
setResult(RESULT_OK, i);m
finish   ();     m
اما الدالةfinish فهي تستخدم لغلق الActivity
وهنا الكود الكامل للبرنامج
Previous
Next Post »

1 comments:

Write comments
mohcine
AUTHOR
15 March 2019 at 19:18 delete

startActivityForResult

Reply
avatar