如何将一个Activity实例传递给另一个Activity

如何将一个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();;


       }

    }

如果可行,请打勾