بعد ان ارسلنا البيانات الي ال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) {
نفذ الكود ده
} 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) {
اذا اتلغت نفذ هذا الكود
}
اذا تمت نفذ هذا الكود
}
if (resultCode == RESULT_CANCELED) {
اذا اتلغت نفذ هذا الكود
}
} else if (requestCode == 2) {
if (resultCode == RESULT_OK) {
اذا تمت نفذ هذا الكود
}
if (resultCode == RESULT_CANCELED) {
اذا اتلغت نفذ هذا الكود
}
}
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
i.putExtra("valueOfSalary", netSalary);
setResult(RESULT_OK, i);m
finish (); m
اما الدالةfinish فهي تستخدم لغلق الActivity
وهنا الكود الكامل للبرنامج
1 comments:
Write commentsstartActivityForResult
ReplyEmoticonEmoticon