kotlin中引用run函数的坑

如果我们用kt开发的肯定都是直接引用控件id对控件进行赋值及操作,最近我在做项目的时候发现运行报null

我很奇怪的看了下,居然是说控件不能为null,由于经常在kt中直接引用控件id,导致我从未想过去从控件方面找原因,加上我其他控件都是用得好好的,于是我就debug,log,查看各种地方都是没有问题的

 

 

其中的date_text就是我的控件id,我Log,debug了datePicker有数据,点击date_text也是直接跳进引用的页面,我又检测了activity引用的布局没问题,于是乎我又开始怀疑是不是我tun函数用得不对,但是无论我怎么调试都是报空!!!!!!!!

就在我差点放弃的时候,我突然想起java语言开发的时候在acitvity中弹出dialog,引用dialog控件会在控件前面加一个dialog,于是我在想我这里弹出一个dialog,然后直接引用的activity控件,是不是这里面有什么问题?(备注:正常情况是没问题的)。接着我就把date_text这个控件初始化了一下

 



接着我就运行后,果然解决问题了,也不再报错了。可是我又在想为什么会出现这种情况呐?这时候突然群友告诉我:

使用kotlinx.android引用控件id的时候,如果是在activity里面的dialog,fragment中使用run,apply函数里面,使用控件id,他调用的this即时dialog,fragment里面的,也就是说他会去dialog,fragment里面去找控件,而不是外面的activity。所以我们上面没有初始化控件的时候一直报控件不能为空.

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值