Вы объявляете это как поле:
private var colorArray = arrayOf(
ContextCompat.getColor(this, R.color.text_yellow),
ContextCompat.getColor(this, R.color.text_green),
ContextCompat.getColor(this, R.color.text_red)
)
Проблема в том, что ваш контекст (параметр this
) равен нулю, прежде чем вызывается ваш метод onCreate()
.И когда вы объявляете что-то как поле, оно пытается немедленно инициализировать это перед вызовом любого метода.(То есть до вызова onCreate
)
Что вы можете сделать, это инициализировать это поле с помощью вызова lazy
.Это означает, что он фактически инициализируется только при первом использовании.Поэтому, если вы вызываете индекс ПОСЛЕ вашего onCreate
, контекст не будет нулевым, и он должен работать нормально.
Измените его на:
private var colorArray by lazy { arrayOf(
ContextCompat.getColor(this, R.color.text_yellow),
ContextCompat.getColor(this, R.color.text_green),
ContextCompat.getColor(this, R.color.text_red)
) }