如果 activity 不是从方向旋转重新创建的,如何执行代码?
How to execute code if activity wasn't re-created from orientation rotation?
我想做一个像应用程序一样的测验。我有一个 class 负责处理问题。我还有一个视图模型,可以容纳这些问题和其他 UI 元素,以协助 UI 旋转更改。
我的代码看起来像这样:
override fun onCreate() {
var questions = quizModel.generateQuestions()
quizViewModel.questions = questions
}
问题是,我只想在 activity 由于旋转和设备方向改变而未重新创建时执行此操作。这是因为我的视图模型已经保存了我的问题列表,所以我不需要生成另一组问题,只需从视图模型中获取问题即可。
只有当 activity 不是从方向更改中重新创建时,是否有一些 IF 条件检查我可以尝试执行上面的代码?
使用:
protected void onCreate (Bundle savedInstanceState)
https://developer.android.com/reference/android/app/Activity#onCreate(android.os.Bundle)
如果 savedInstanceState
为 null 那么它是你第一次创建 activity,如果不为 null 那么它正在被重新创建。
Change your ViewModel to be something like this
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!!
}
}
and for your Activity
class yourActivity() {
lateinit var question: yourType
override fun onCreate() {
question = quizModel.generateQuestions()
}
}
我想做一个像应用程序一样的测验。我有一个 class 负责处理问题。我还有一个视图模型,可以容纳这些问题和其他 UI 元素,以协助 UI 旋转更改。
我的代码看起来像这样:
override fun onCreate() {
var questions = quizModel.generateQuestions()
quizViewModel.questions = questions
}
问题是,我只想在 activity 由于旋转和设备方向改变而未重新创建时执行此操作。这是因为我的视图模型已经保存了我的问题列表,所以我不需要生成另一组问题,只需从视图模型中获取问题即可。
只有当 activity 不是从方向更改中重新创建时,是否有一些 IF 条件检查我可以尝试执行上面的代码?
使用:
protected void onCreate (Bundle savedInstanceState)
https://developer.android.com/reference/android/app/Activity#onCreate(android.os.Bundle)
如果 savedInstanceState
为 null 那么它是你第一次创建 activity,如果不为 null 那么它正在被重新创建。
Change your ViewModel to be something like this
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!!
}
}
and for your Activity
class yourActivity() {
lateinit var question: yourType
override fun onCreate() {
question = quizModel.generateQuestions()
}
}