为什么我的控件实例化后还是报空指针异常?

今天练手写项目的时候,一个Bug困了我大半天。
我的TextView明明实例化了,为啥setText时候还是给我报空指针异常啊!?

这里写图片描述
难道我的findViewById是假的吗?把代码翻来覆去看了好几遍,终于知道问题所在。
我们知道,findViewById( )方法的原本的形态应该是view.findViewById( ),那么将view.省略后则默认的id查找范围是在当前Activity中的设置的view,即经过setContentView( )方法设置的layout文件。
这里写图片描述
而这里我要实例化的控件id并不在当前的查找范围里!这里我在上面用了LayoutInflater( )方法对forecastLayout这个布局文件进行动态添加控件,而我要添加的控件id都在forecast_item.xml这个layout文件中,因此我将他们打包转化为view。
所以在下面我们要对他们实例化就要用view.findViewById( )。
这里写图片描述
在这之前我都贪图方便直接用的findViewById( ),写到这里却忘记了,可以说是心急吃不了热豆腐了。特意写下这篇博客告诫自己不要再犯同样的错误了,如果帮到了在读的你,那真的是太好了。

另外看到网上说的另一种空指针异常的可能性是setContentView忘记写或者写在了findViewById后面。这种情况现在很少了吧,毕竟现在Android Studio在创建Activity的时候会默认创建一个布局
这里写图片描述
并且自动setContentView了。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值