Kotlin / Android Studio - Как передать переменную из режима переопределения в остальную часть приложения? - PullRequest
2 голосов
/ 30 марта 2020

Я немного осмотрелся и не нашел хорошего ответа на мою проблему. В моем приложении у меня есть таймер. Этот таймер останавливается на щелчке, и я хотел бы рассчитать счет на основе оставшегося времени. Я могу использовать «millisUntilFinished» для вычисления оценки, но я не могу повторно использовать переменную оценки в своем приложении. Не могли бы вы помочь мне с правильным / лучшим способом сделать это? Ниже мой код:

var score: Long

        val timer = object : CountDownTimer(20000, 1000) {
        override fun onTick(millisUntilFinished: Long)  {
            timer.setText("" + millisUntilFinished / 1000)
              score = millisUntilFinished / 1000
            }
            override fun onFinish() {
            timer.setText("0");
        }
    }
    timer.start()

Когда я пытаюсь использовать его позже в своем приложении, я получаю " Переменная 'оценка' должна быть инициализирована. " Я попробовал довольно Несколько вещей, но каждый раз, когда я не могу использовать переменную, инициализированную в процессе переопределения.

Спасибо за помощь!

1 Ответ

1 голос
/ 30 марта 2020

Вы можете определить его как lateinit var или инициализировать его.

lateinit var score: Long

        val timer = object : CountDownTimer(20000, 1000) {
        override fun onTick(millisUntilFinished: Long)  {
            timer.setText("" + millisUntilFinished / 1000)
              score = millisUntilFinished / 1000
            }
            override fun onFinish() {
            timer.setText("0");
        }
    }
    timer.start()

Обратите внимание, что lateinit определяет в классе не в функции. Или вы можете использовать это:

var score=0.toLong()

        val timer = object : CountDownTimer(20000, 1000) {
        override fun onTick(millisUntilFinished: Long)  {
            timer.setText("" + millisUntilFinished / 1000)
              score = millisUntilFinished / 1000
            }
            override fun onFinish() {
            timer.setText("0");
        }
    }
    timer.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...