View Full Version : سوییچ بین اکتیویتی های پدر و فرزند
masudafsar
سه شنبه 07 بهمن 1393, 02:16 صبح
سلام
پروژه من دو تا اکتیویتی داره که اولی برای نمایش لیست محصولات و دومی مشخصات محصول.
اکتیویتی لیست محصولات رو پدر مشخصات محصول قرار دادم.
لیست محصولات با استفاده از متغییر catID، لیست رو پر می شه.
حالا وقتی از مشخصات به لیست بر می گردم یه مشکلی وجوداره. اون هم اینه که نمی دونم چطوری متغیر catID رو به لیست پاس بدم.
* نکته این که من برای برگشت به اکتیویتی والد از کد خاصی استفاده نکردم و برای اینکار باید باید با دکمه Back یا دکمه برگشت موجود در ActionBar زد.
emaad_gh
سه شنبه 07 بهمن 1393, 12:09 عصر
سلام، میتونین از یک کلاس static به عنوان رابط استفاده کنید :
public static class CatID {
static int catID=0;
public static int getCatId() {
return catID;
}
public static void setCatId(int id) {
catID = id;
}
}
masudafsar
سه شنبه 07 بهمن 1393, 13:59 عصر
سلام، میتونین از یک کلاس static به عنوان رابط استفاده کنید :
یعنی نمیشه وقتی از اکتیویتی فرزند به والد برمیگردیم، یه متغیر رو هم پاس بدیم؟
masudafsar
سه شنبه 07 بهمن 1393, 14:15 عصر
در ضمن کلاسی از نوع static تو جاوا نداریم
rubiks.kde
سه شنبه 07 بهمن 1393, 16:24 عصر
یعنی نمیشه وقتی از اکتیویتی فرزند به والد برمیگردیم، یه متغیر رو هم پاس بدیم؟
چرا میشه .اگه اکتیویتی رو به صورت startActivityForResult اجرا کنید در اکتیویتی فرزند نیز
Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
به این صورت عمل میکنید و در اکتیویتی پدر اطلاعات در تابع
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
//Do something
}
قابل دسترسه
هر اطلاعاتی رو که میخوایی داخل resultIntent بزار و ازش استفاده کن توی اکتیویتی پدر.
masudafsar
سه شنبه 07 بهمن 1393, 17:09 عصر
چرا میشه .اگه اکتیویتی رو به صورت startActivityForResult اجرا کنید در اکتیویتی فرزند نیز
Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
به این صورت عمل میکنید و در اکتیویتی پدر اطلاعات در تابع
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
//Do something
}
قابل دسترسه
هر اطلاعاتی رو که میخوایی داخل resultIntent بزار و ازش استفاده کن توی اکتیویتی پدر.
من این رو تو stackoverflow (http://stackoverflow.com/questions/10582314/how-to-get-back-the-result-from-child-activity-to-parent-in-android) هم دیدم ولی نتونستم متوجه بشم چیه!
الان کد زیر رو کجای اکتیویتی فرزند قرار بدم؟
Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
سلسه مراتب اکتیویتی های من بصورت زیر هست.
Home > List > Details
وقتی برای بار اول لیست رو اجرا می کنم ( از home ) هم باید از startActivityForResult استفاده کنم؟
rubiks.kde
سه شنبه 07 بهمن 1393, 19:03 عصر
من جزییات برنامه شما رو نمیدونم و این روش هم که گفت کلی هست.برای هر جا دوست دارید استفاده کنید.
این کدها رو هم توی onPaus() هر اکتیویتی که میخوایید بنویسید البته اون Finish() رو بردارید.تنها setResul کافیه.البته هر جای دیگه هم میشه نوشت توی اکتیویتی.هرجا که id رو داشتید بنویسید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.