您的位置:首页 > 其它

非Activity类中调用Activity方法

2016-02-02 08:36 295 查看
项目中遇到一个问题,要在非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 变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: