您的位置:首页 > 移动开发 > Android开发

android 代码转换成Kotlin代码时,变量报Property must be initialized or be abstract错误

2020-06-27 05:07 1491 查看

 

一般的activity是这样的,定义个输入框变量

 

 

 

 

通过 Code→Convert Java File to Kotlin File 或者快捷键 Ctrl+Alt+Shift+K将Java代码转换成Kotlin代码

 

 

Java代码成功转换成了Kotlin代码,但定义的输入框变量却报错了。查看错误信息是

Property must be initialized or be abstract。

 

 

也就是说Kotlin中定义的变量,要么是定义时就初始化,要么就定义成抽象的。但显然这里不能定义成抽象的,那就试着直接初始化。

 

 

 

初始化后,果然不再报错。那就直接运行,却发现App直接停止运行了。查看错误日志,

 

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
                                                                              at android.content.ContextWrapper.getResources(ContextWrapper.java:85)
                                                                              at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:74)

 

很显然,我在初始化控件时,Context还没初始化,导致了空指针异常。说明定义控件时就初始化不能解决刚才Kotlin报的错误。

几番查阅Kotlin语法、搜索资料后,才发现,Kotlin有一个lateinit修饰符。字面意思就可以知道它是表名变量需要在定义后才赋值的。

 

 

使用 lateinit修饰后,就可以愉快地玩耍了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/1048653/blog/917616

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐