您的位置:首页 > 移动开发 > Android开发

关于android在fragment中调用getActivity()功能进行Toast或者setAdapter时空指针的异常

2015-03-23 14:58 471 查看
最近几天发现线上版本,多了好多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.getInstance()<span style="font-family: Arial, Helvetica, sans-serif;">, "你的内容"</span><span style="font-family: Arial, Helvetica, sans-serif;">,</span><span style="font-family: Arial, Helvetica, sans-serif;">Toast.</span><span class="s2" style="font-family: Arial, Helvetica, sans-serif;">LENGTH_SHORT</span><span style="font-family: Arial, Helvetica, sans-serif;">).show();</span></p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  空指针getActivity