使用findViewById获取到的返回值为空

就我自己遇到的情况来分析获取到的返回值为空的原因。

个人一般习惯在Activity中添加三个方法initParams,findViews,operation分别初始化参数,view和基本的逻辑。

然后写一个BaseActivity,在BaseActivity中的onCreate方法中调用这三个方法。但是写完一段代码开始查看效果的时候遇到一个问题:APK直接闪退了。看日志也就是NullPointException这个异常,然后跟上去查看最后发现是在findViews方法里面使用findViewById方法获取的返回值为空。

这个时候我就和纳闷了,这个方法怎么可能获取到null呢?经过一番加log的操作还是没有找到原因,于是就怀疑是调用顺序的原因,然后就调整方法调用的顺序,经过几次调整后APK竟然真的跑起来了。这个时候回头看下当前方法的调用顺序和之前有什么不同。

最后发现原来继承BaseActivity的Activity在onCreate中会先调用super方法,这个时候就调用到了BaseActivity里面onCreate方法里面了,然后在这个onCreate里面做的初始化操作。这个时候findViewById就会出现问题了。什么问题呢?原来这个时候还没有调用setContent方法!!!这个方法会在运行完BaseActivity的onCreate方法后才会执行到。所以其实这个时候整个View就没有添加进去,你去findViewById肯定不会有返回值,然后调用这个view的时候就会出现空指针异常了。

所以最后一定要注意:findViewById的操作一定要放到setContent之后调用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值