非Activity类中调用Activity方法

来源:互联网 发布:db2 oracle mysql 编辑:程序博客网 时间:2024/05/21 09:51

项目中遇到一个问题,要在非Activity的类中调用Activity的setResult()方法,通过好友和CSDN网友的帮助终于解决了,感谢!

解决地址:http://bbs.csdn.net/topics/390911138


我的实现方式:

在类中定义Context,并在构造函数中初始化

private Context mContext;......private PaAccountManager(Context context) {mContext = context;contentResolver = mContext.getContentResolver();}
定义Activity

public Activity activity = null;    public void setActivity(Activity act) {        this.activity = act;    }
然后就可以用activity调用Activity类的方法了

Intent intent = new Intent();intent.putExtra("result", "login_success");activity.setResult(activity.RESULT_OK, intent);activity.finish();
同时,要在PaWebViewActivity.java中加入下面的语句

PaAccountManager.getInstance(this).setActivity(this);



就像上面链接中说的,贴下代码,参考:

public class AActivity extends Activity ·{  //声明一个Bclass对象  public Bclass bClass;                                  public void onCreate(..) {               bClass = new Bclass(this);         }                          public int methoda() {                //do something         }}public class Bclass {        public AActivity aActivity = null;        public Bclass(AActivity activity){             aActivity = activity;        }        //我想在这里面这样用        aActivity.methoda();}

当然,还有这个,也是重点

最好不要令 Activity本身为 static, 这样的话,系统进行资源回收的时候,判断 该 Activity为 static, 就不会对他进行资源回收你可以在非 Activity 类中,写这么一个方法.public void setActivityCallback(Activity activity){   this.aActiity = activity;}或者给非 Activity 添加一个包含 Activity 的构造方法如:public Bclass(Activity activity){  this.aActivity = activity;}但是请注意不要在非 Activity 类中,将 Activity 定义为 static 变量




0 0
原创粉丝点击