I am trying to reference my constants val
inside of override fun onBackPressed()
but they are in my onCreate()
method and when I move them outside of the onCreate()
method I get an initializer error.
None of these work, this is what I've tried:
My ExamActivity:
class ExamActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_exam)
val popUpView = this.LinearLayoutPopUp
val menuView = this.LinearLayoutMenu
val resultView = this.LinearLayoutResult
val blurView = this.blurView
}
override fun onBackPressed() {
blurView.visibility = VISIBLE
popUpView.visibility = VISIBLE
view.visibility = VISIBLE
}
}
I've also moved my constants outside my onCreate()
method and I get an error
class ExamActivity : AppCompatActivity() {
val popUpView = this.LinearLayoutPopUp
val menuView = this.LinearLayoutMenu
val resultView = this.LinearLayoutResult
val blurView = this.blurView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_exam)
}
override fun onBackPressed() {
blurView.visibility = VISIBLE
popUpView.visibility = VISIBLE
view.visibility = VISIBLE
}
}
and since its a val
I can't declare them outside onCreate()`` as
null`` and then set it in onCreate()
:
class ExamActivity : AppCompatActivity() {
val popUpView: LinearLayout? = null
val menuView: LinearLayout? = null
val resultView: LinearLayout? = null
val blurView: View? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_exam)
popUpView = this.LinearLayoutPopUp
menuView = this.LinearLayoutMenu
resultView = this.LinearLayoutResult
blurView = this.blurView
}
override fun onBackPressed() {
blurView.visibility = VISIBLE
popUpView.visibility = VISIBLE
view.visibility = VISIBLE
}
}
How do I set this up where I can access my val
constants in the override fun onBackPressed()
method?
You can declare variables outside onCreate()
method by using lateinit
while declaring them. So your code would be like this:
class ExamActivity : AppCompatActivity() {
lateinit var popUpView
lateinit var menuView
lateinit var resultView
lateinit var blurView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_exam)
popUpView = this.LinearLayoutPopUp
menuView = this.LinearLayoutMenu
resultView = this.LinearLayoutResult
blurView = this.blurView
}
override fun onBackPressed() {
blurView.visibility = VISIBLE
popUpView.visibility = VISIBLE
view.visibility = VISIBLE
}
}