ورود

View Full Version : پیدا کردن اکتیویتی قبلی



Raminab
جمعه 18 اردیبهشت 1394, 18:18 عصر
سلام دوستان عزیز

وقتی توی ی اکتیویتی هستیم میشه فهمید که اسم اکتیویتی قبلی که این اکتیویتی رو صدا زده چی بوده؟ خودم چون بلد نیستم مجبورم اسم اکتیویتیا رو putExtra کنم بعد تو اکتیوتی بعد چک کنم از کدوم اکتیویتی اومده,راه بهتری وجود داره؟

tux-world
جمعه 18 اردیبهشت 1394, 23:37 عصر
کار خوبی میکنی :لبخندساده: یه راه دیگه هم هستش که تو کلاس Application اگه داری متغیر تعریف کنی ست کنی. با task هم میشه. ولی راهت درسته

keyhan.taktaz
شنبه 19 اردیبهشت 1394, 00:09 صبح
توی onCreate هر اکتیویتی this رو توی یک متد استاتیک ذخیره کن بعد هرجا لازم داشتی بگو:
if(Helper.getAcitivity instanceOf MyActivity)
{
//do something

}

Raminab
شنبه 19 اردیبهشت 1394, 17:05 عصر
توی onCreate هر اکتیویتی this رو توی یک متد استاتیک ذخیره کن بعد هرجا لازم داشتی بگو:
if(Helper.getAcitivity instanceOf MyActivity)
{
//do something

}

نتونستم پیاده سازی کنم چون نفهمیدم چی گفتین :( میشه ی ذره بیشتر راجب این روش توضیح بدید ؟ ممنون میشم

keyhan.taktaz
شنبه 19 اردیبهشت 1394, 17:40 عصر
خیلی سادست.
کدشو مینویسم خودت برسی کن (معمولا از این کارا نمیکنم)

public class FirstActivity extends BaseActivity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//do something and go to second activity

}

}
public class SecondActivity extends BaseActivity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if(getPreviusActivity instanceOf FirstActivity)
{
//previous activity was FirstActivity
}
else if(getPreviusActivity instanceOf OtherActivity)
{
//previous activity was OtherActivity
}
}

}
public class BaseActivity extends ActionBarActivity
{
private static BaseActivity previusActivity;

public BaseActivity getPreviusActivity()
{
return previusActivity;
}
@Override
protected void onDestroy()
{
super.onDestroy();
previusActivity = this;
}
}

Raminab
شنبه 19 اردیبهشت 1394, 19:26 عصر
ممنون بابت لطفت دوست عزیز :چشمک::چشمک:

keyhan.taktaz
شنبه 19 اردیبهشت 1394, 20:19 عصر
ممنون بابت لطفت دوست عزیز :چشمک::چشمک:

BaseActivity رو تو manifiest نذار فقط.

Nevercom
یک شنبه 20 اردیبهشت 1394, 01:27 صبح
راه حل دیگه هم این هست که بجای استفاده از startActivity از startActivityForResult برای جابجایی بین اکتیویتی ها استفاده کنی، در این صورت می تونی در اکتیویتی دوم با متد getCallingActivity بفهمی که اکتیویتی اول کدوم بوده

http://stackoverflow.com/a/3304374/1686304