如何将一个Activity实例传递给另一个Activity [英] How to pass an Activity instance to another activity

查看:123
本文介绍了如何将一个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();;


       }

    }

如果可行,请打勾

这篇关于如何将一个Activity实例传递给另一个Activity的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆