While I was following up with the Developing Android Apps with Kotlin course on udacity I found that the instructor has made a lateinit variable lateinit var diceImage: ImageView
as she will initialize it later before it's called
*The lateinit variable was called in the rollDice() function but the variable was initialized after the function was called in the setOnClickListner
rollButton.setOnClickListener {
rollDice()
}
diceImage = findViewById(R.id.dice_Image)
You can find the full code below
package com.example.diceroller
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import kotlin.random.Random
class MainActivity : AppCompatActivity() {
private var rollNumber:Int = 0
lateinit var diceImage: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.roll_Button)
rollButton.setOnClickListener {
rollDice()
}
diceImage = findViewById(R.id.dice_Image)
}
fun rollDice() {
val diceImage: ImageView = findViewById(R.id.dice_Image)
var randomInt: Int
do {
randomInt = Random.nextInt(6) + 1
} while (randomInt == rollNumber)
rollNumber = randomInt
when (rollNumber) {
1 -> diceImage.setImageResource(R.drawable.dice_1)
2 -> diceImage.setImageResource(R.drawable.dice_2)
3 -> diceImage.setImageResource(R.drawable.dice_3)
4 -> diceImage.setImageResource(R.drawable.dice_4)
5 -> diceImage.setImageResource(R.drawable.dice_5)
else -> diceImage.setImageResource(R.drawable.dice_6)
}
}
}
Since I am new to android development I don't How did she initialize it after calling it in the roleDice() function
Can anyone clear this out for me? .... Shouldn't it be called before the setOnClickListner?
Thanks for helping!