项目中遇到一个问题,要在非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 变量