我正在尝试从Kotlin开始。我有一个关于在init方法中初始化属性的问题。我想在init块中调用的方法中初始化属性。但这会导致错误,该属性未初始化。当我在init方法中设置属性时,没有问题:
private var rippleColor: Int
init {
rippleColor = 1;
}
通过另一种方法执行此操作时,出现了我先前描述的错误:
private var rippleColor: Int
init {
setDefaultRippleColor(context)
}
fun setDefaultRippleColor(context: Context) {
val attrs: IntArray = intArrayOf(R.attr.colorControlHighlight)
var a = context.obtainStyledAttributes(attrs)
rippleColor = a.getColor(0, Color.RED)
a.recycle()
}
是否可以像我想做的那样做?还是不可能?
答案 0 :(得分:2)
如果确定该属性将被初始化,则可以设置一个任意值。
private var rippleColor: Int = 0
然后在rippleColor
方法中将a.getColor(0, Color.RED)
的值替换为setDefaultRippleColor
答案 1 :(得分:0)
您可以使用以下代码。
private var rippleColor: Int = Int.MIN_VALUE
init {
setDefaultRippleColor(context)
}
private fun setDefaultRippleColor(context: Context){
val attrs: IntArray = intArrayOf(R.attr.colorControlHighlight)
val a = context.obtainStyledAttributes(attrs)
rippleColor = a.getColor(0, Color.RED)
a.recycle()
}