Как использовать функцию переопределения onBackPressed (), когда мои значения находятся в onCreate () - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь сослаться на свои константы val внутри override fun onBackPressed(), но они в моем методе onCreate(), и когда я перемещаю их вне метода onCreate(), я получаю ошибку инициализатора.

Ни одна из этих работ, это то, что я пробовал:

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
    }
}

Я также переместил свои константы за пределы моего метода onCreate(), и я получил ошибку

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
    }
}

и, поскольку он val, я не могу объявить их вне onCreate()`` as null`` и затем установить его в 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
    }
}

Как мнеустановить, где я могу получить доступ к своим val константам в методе override fun onBackPressed()?

1 Ответ

1 голос
/ 19 апреля 2019

Вы можете объявить переменные вне метода onCreate(), используя lateinit при их объявлении.Ваш код будет выглядеть так:

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...