Как выполнить код, если действие не было воссоздано из поворота ориентации? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь сделать викторину как приложение. У меня есть класс, который отвечает за вопросы. У меня также есть модель представления, которая будет содержать эти вопросы и другие элементы пользовательского интерфейса, чтобы помочь с изменениями ротации пользовательского интерфейса.

Мой код выглядит примерно так:

override fun onCreate() {
    var questions = quizModel.generateQuestions()
    quizViewModel.questions = questions
}

Дело в том, что я только хотите сделать это, когда действие не было воссоздано из-за поворота и изменения ориентации устройства. Это связано с тем, что моя модель представления уже содержит мой список вопросов, поэтому мне не нужно создавать другой набор вопросов, просто получайте вопросы из модели представления. попытаться выполнить приведенный выше код, только если действие не было воссоздано из-за изменения ориентации?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Измените ViewModel на что-то вроде этого

class QuizModel():ViewModel(){
    // Change String? to your return type
    private var generatedQuestions : String? = null

    // Change String to your return type
    fun generateQuestions() : String {

        if (generatedQuestions == null) {
            // put your code here
            
            // at the end
            generatedQuestions = "the result of your code"
        }
        
        return generatedQuestions!!
    }

}

и для вашей Activity

class yourActivity() {
    lateinit var question: yourType
    override fun onCreate() {
        question = quizModel.generateQuestions()
    }
}
0 голосов
/ 09 июля 2020

Используйте:

protected void onCreate (Bundle savedInstanceState)

https://developer.android.com/reference/android/app/Activity#onCreate (android .os.Bundle)

if savedInstanceState имеет значение null, тогда его действие создается при первом создании действия, если значение не равно null, оно создается заново.

...