I am defining like a instance variable in kotlin and want to initialize it onCreate method of an activity.
var count:
There are several ways to resolve this issue.
You can Initialise it with default value (e.i 0 or -1 or whatever) and then initialise it whenever your logic says.
Or tell compiler that count will be initialised later in this code by using Delegates.notNull check notNull.
var count: Int by Delegates.notNull<Int>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// You can not call `Int.inc()` in onCreate()` function until `count` is initialised.
// count.inc()
// **initialise count**
}
And if you need count value on demand (if not necessary to initialise in onCreate), you can use lazy function. Use this only if you have an intensive (Some calculation/Inflating a layout etc) task that you want to do on demand, Not to just assign a value.
var count:Int by lazy {
// initialise
}
Now you can decide what to use.
I hope it helps.
There's no reason to leave it uninitialized. Just initialize it to 0 or -1.
lateinit is for non-null object references that can't easily be initialized in the class body definition.