在安卓开发中遇到空指针异常“Attempt to invoke virtual method ‘XXX()‘ on a null object reference”

在安卓开发中遇到空指针异常“Attempt to invoke virtual method ‘XXX()’ on a null object reference”

开始时我的代码大致是这样的

 @BindView(R.id.rg_secondary)
    RadioGroup rdGroup;

protected void onCreate(@Nullable Bundle savedInstanceState) {
      setContentView(R.layout.yougou_home);
      rdGroup.check(R.id.rg_btn1);
}

使用了butterknife插件用来绑定控件。在前期的几个页面的制作中倒也没遇到什么问题,但是到这里时就出现了空指针异常的问题,在加载页面时应用直接弹出,也怪我没有搞懂这句报错的意思,以为问题是出在了.check()方法的参数里,就一直尝试用不同的方法验证R.id.rg_btn1这个控件确实是可以被找到的,这个过程花费了大概三个小时的时间。
后来我将代码移植到其他功能正常的java文件中,页面却正常加载了,控件的功能也正常了。我就仔细看了下这句报错的意思,在原java文件中将调试的代码改成 Log.d(TAG, rdGroup.getId()+""); 果然拿不到rdGroup的Id。

于是我删除了使用butterKnife绑定控件的代码转而使用常规方法绑定控件

protected void onCreate(@Nullable Bundle savedInstanceState) {
      setContentView(R.layout.yougou_home);
      rdGroup=this.findViewById(R.id.rg_secondary);
      rdGroup.check(R.id.rg_btn1);
}

页面正常显示。
但疑问依然存在,为什么在前面的开发中butterKnife绑定的控件都没有出现问题,到了这里就行不通了呢?

总结:
报错中的object指的不是方法中传入的参数,而是调用这个方法的对象,将这点搞错并浪费时间是愚蠢的错误。以后要继续多加练习,多多犯错,增长经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值