非Activity类中调用Activity方法

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




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值