onRestoreInstanceState доступ к закрытым переменным в kotlin - PullRequest
1 голос
/ 30 марта 2020

У меня есть несколько личных переменных Int, инициализированных в kotlin.

class multiply : AppCompatActivity() {
.
.
private var score:Int=0;
private var score2=0;
.
.
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);

        if(savedInstanceState==null) {
            score=score2;

        }

.
.
     }
.
.
    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        score=savedInstanceState.getInt("val_score");
     }


У меня вопрос, когда я поворачиваю свой телефон, создается новое действие, и в данном коде оценка присваивается 0. Есть ли способ инициализации только один раз? Какой выход?

У меня есть некоторые расчеты внутри onCreate, используя счет. Поскольку onRestoreInstanceState выполняется после onCreate, есть ли способ сохранить значение счета без изменений при повороте экрана, кроме определения его в onStart?

1 Ответ

0 голосов
/ 30 марта 2020

Ваш код должен выглядеть следующим образом:

class MultiplyActivity : AppCompatActivity() {
    private var score = 0;
    private var score2 = 0;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if(savedInstanceState != null) { 
            score = savedInstanceState.getInt("score", 0)
            score2 = savedInstanceState.getInt("score2", 0)
        }
     }

    override fun onSaveInstanceState(bundle: Bundle) {
        super.onSaveInstanceState(bundle)
        bundle.putInt("score", score)
        bundle.putInt("score2", score2)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...