I am using Kotlin and fragments in my app. I created a secondary constructor to keep primary constructor empty in order to avoid the error of could not find fragment constructor. I assigned late initialize variable in secondary constructor of fragment but it is null when called, causing null pointer exception. Here is the code sequence:
class VideoFragment(
) : Fragment(),
VideoFileListener {
private lateinit var mainContext: Context
private lateinit var itemClickListener: ItemClickListener
constructor(
mainContext: Context,
itemClickListener: ItemClickListener
) : this() {
this.mainContext = mainContext
this.itemClickListener = itemClickListener
}
}
companion object {
@JvmStatic
fun newInstance(
mainContext: Context,
itemClickListener: ItemClickListener
) =
VideoFragment(mainContext, itemClickListener)
}
I access my fragment with static newInstance function. Why these variables are not initialized in secondary constructor?