网上找了其他解决方法也不行错误日志:java.lang.NullPointerException:Attempttoinvokevirtualmethod'android.view.Viewandroid.app.Activity.findViewById(int)'onanullobjectreferenceatcom.dmxy.fragment.ChannelFragment.onCheckedChanged(ChannelFragment.java:226)代码:@OverridepublicvoidonCheckedChanged(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:首页和频道模块快速切换有bugRadioButtontempButton=getActivity().findViewById(checkedId);//这行空指针Log.d(TAG,"2222222222222");tempButton.setOnClickListener(this);}
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
这里产生空指针有两个原因:a)Fragment只有在onCreateView之后View才会被赋值,可能在此之前获取Viewb)Fragment已经调用了onDestroyView,可能在此之后获取View如果要正确获取某个视图,一定要确保生命周期执行准确。针对你的这种情况,在此之前应该先判断Fragment的getView获取的视图是否为空,如果不为空,在Fragment中使用getView().findViewById()获取子View。如果在Activity中,可以参照第一个回答位置处的回调处理。
千万里不及你
TA贡献1784条经验 获得超9个赞
RadioGroup的点击操作,按道理讲,应该不会出现getActivity()returnnull的情况p.s.在Fragment里直接通过getActivity().findViewById(...)获取View的对象,这是不正确的做法,正确做法:AndroidDeveloper:CommunicatingwithOtherFragments
添加回答
举报
0/150
提交
取消