最近几天发现线上版本,多了好多NullPointerException空指针异常的错误。仔细检查发现大多实在fragment中调用getActivity方法时造成的。我想原因可能是用户请求网络了但是一直没结果就点击返回按钮了,你的activity被finish掉了但是异步任务还在进行,所以你在onPostExecute()方法为适配器添加数据或者Toast时就会造成空指针异常。我的解决办法一种是你在fragment中调用getActivity()之前都判断一下
if(getActivity == null){
return;
}
但是这种方法有点繁琐。另一种方法是你提前创建一个activity对象,最后一种方法是传递你的应用的Application对象替代getActivity(),例如:public class MyApplication extends Application {
private static DaoMaster daoMaster;
private static DaoSession daoSession;
private static MyApplication mInstance;
public static MyApplication getInstance(){
return mInstance;
}
@Override
public void onCreate() {
super.onCreate();
if(mInstance == null){
mInstance = this;
}
}
然后就是toast时调用:<p class="p1">Toast.makeText(MyApplication.getInst