Dan*_*ele 5 android initialization kotlin
我已经使用Android Studio 3.0将此代码从Java转换为Kotlin
internal var background: Drawable
internal var xMark: Drawable
private fun init() {
background = ColorDrawable(Color.RED)
xMark = ContextCompat.getDrawable(this@Subscriptions_main, R.drawable.delete)
}
Run Code Online (Sandbox Code Playgroud)
在第1行和第2行,我收到错误:
财产必须初始化或是抽象的
即使它将在init函数中初始化.
在写字:
internal var background: Drawable? = null
internal var xMark: Drawable? = null
Run Code Online (Sandbox Code Playgroud)
一个可行有效的解决方案?还有其他更好的方法吗?
Vin*_*rat 13
在使用之前lateinit
,您必须了解这意味着什么.
您的变量未正确初始化.解决该问题的各种方法:
init
块(不是您声明的私有函数)lateinit
关键字)这3个选项不等同,根据您的代码,前两个可能比第三个更合适.
lateinit
如果在实际初始化变量之前访问变量,将使您的应用程序崩溃.
这些init
块不是功能,只需删除该private fun
部分和括号即可:
internal var background: Drawable
internal var xMark: Drawable
init {
background = ColorDrawable(Color.RED)
xMark = ContextCompat.getDrawable(this@Subscriptions_main, R.drawable.delete)
}
Run Code Online (Sandbox Code Playgroud)