初始化中调用的方法中的Init属性

时间:2019-08-26 07:28:08

标签: android kotlin

我正在尝试从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()
}

是否可以像我想做的那样做?还是不可能?

2 个答案:

答案 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()
}