请问Fragment的ViewPager这样的空指针该怎么结局呢?

网上找了其他解决方法也不行错误日志:java.lang.NullPointerException:Attempttoinvokevirtualmethod'android.view.Viewandroid.app.Activity.findViewById(int)'onanullobjectreferenceatcom.dmxy.fragment.ChannelFragment.onCheckedChanged(ChannelFragment.java:226)
代码:
@Override
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
if(json!=null){
Gsongson=newGson();
ChannelGameTypeBeanchannelGameTypeBean=gson.fromJson(json,ChannelGameTypeBean.class);
Listdata=channelGameTypeBean.getData();
//TODO:三大游戏类型需改为动态加载数据
ChannelGameTypeBean.DataBeandataBean=data.get(0);//初次获取王者荣耀数据1.英雄联盟2.王者荣耀3.绝地求生
Listnav=dataBean.getNav();
ChannelGameTypeBean.DataBean.NavBeannavBean=nav.get(checkedId);//0.比赛1.解说2.战队3.专栏4.大神
intnavId=navBean.getNavid();
intsizes=data.size();
Stringsize=String.valueOf(sizes);
//传递获取分类游戏数据的POST参数
BaseApplication.getApplication().getMap().put("navId",navId);
BaseApplication.getApplication().getMap().put("size",size);
}
//TODO临时选中
//TODO:首页和频道模块快速切换有bug
RadioButtontempButton=getActivity().findViewById(checkedId);//这行空指针
Log.d(TAG,"2222222222222");
tempButton.setOnClickListener(this);
}
开心每一天1111
浏览 913回答 2
2回答

繁星coding

这里产生空指针有两个原因:a)Fragment只有在onCreateView之后View才会被赋值,可能在此之前获取Viewb)Fragment已经调用了onDestroyView,可能在此之后获取View如果要正确获取某个视图,一定要确保生命周期执行准确。针对你的这种情况,在此之前应该先判断Fragment的getView获取的视图是否为空,如果不为空,在Fragment中使用getView().findViewById()获取子View。如果在Activity中,可以参照第一个回答位置处的回调处理。

千万里不及你

RadioGroup的点击操作,按道理讲,应该不会出现getActivity()returnnull的情况p.s.在Fragment里直接通过getActivity().findViewById(...)获取View的对象,这是不正确的做法,正确做法:AndroidDeveloper:CommunicatingwithOtherFragments
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript