如何将一个Activity实例传递给另一个Activity
我有一个名为 BaseActivity 的活动,该活动扩展了Activity.
从这开始,我必须转到 SettingsActivity ,该菜单扩展了PreferenceActivity
,在按下菜单按钮时.要启动独立类中的AsyncTask
,我需要BaseActivity
的实例.如何在SettingsActivity
中获得一个BaseActivity
实例?
Hi I have an activity named BaseActivity, which extends Activity.
from this i have to go to SettingsActivity which extends PreferenceActivity
, on menu button press. To start a AsyncTask
, which is in an independent class, i need an instance of BaseActivity
. How can i get a BaseActivity
instance in the SettingsActivity
?
有什么办法, 例如:
intent.putExtra("activity_instance",BaseActivity.this);
使用getter和setter并使它们所驻留的类成为单例类.
这是一个单例类.使用该类,我们可以在整个类中共享数据(例如int,boolean,activity实例等).
public class CommonModelClass
{
public static CommonModelClass singletonObject;
/** A private Constructor prevents any other class from instantiating. */
private Activity baseActivity;
public CommonModelClass()
{
// Optional Code
}
public static synchronized CommonModelClass getSingletonObject()
{
if (singletonObject == null)
{
singletonObject = new CommonModelClass();
}
return singletonObject;
}
/**
* used to clear CommonModelClass(SingletonClass) Memory
*/
public void clear()
{
singletonObject = null;
}
public Object clone() throws CloneNotSupportedException
{
throw new CloneNotSupportedException();
}
//getters and setters starts from here.it is used to set and get a value
public Activity getbaseActivity()
{
return baseActivity;
}
public void setbaseActivity(Activity baseActivity)
{
this.baseActivity = baseActivity;
}
}
在BaseActivity类中做到这一点.
In BaseActivity class do like this.
Class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
CommonModelClass commonModelClass = CommonModelClass.getSingletonObject();
commonModelClass.setbaseActivity(BaseActivity.this);
//after using the BaseActivity instance dont forget to call commonModelClass.clear(); else it wont be garbage collected
}
}
在SettingsActivity中这样做
In SettingsActivity do like this
Class SettingsActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
CommonModelClass commonModelClass = CommonModelClass.getSingletonObject();
Activity instanceBaseActivity= commonModelClass.getbaseActivity();;
}
}
如果可行,请打勾