【发布时间】:2021-12-14 13:45:57
【问题描述】:
我在函数中有一个观察者。我首先在我的活动onCreate() 中调用此函数,它工作正常。之后,当我再次调用此函数时,我的观察者内部的代码被调用了两次。如何防止这种行为?
这是我的观察者功能
private lateinit var word: String
fun addViews() {
viewModel.getQuestion()
viewModel.questionResponse.observe(this, { it ->
this.word = it.data.word
createAnswerTextView(this.word.length)
}
})
}
编辑:
我想做的是通过在这些步骤中删除和添加视图来刷新布局。
- 创建与字长一样长的文本视图。 (
addViews()为我做) - 删除这些视图。
- 只要有新的单词长度,就可以再次创建文本视图。 (
addViews()为我做)
我无法在活动的onCreate() 方法中只创建一次观察者。因为我需要多次使用 addViews 函数及其观察者。
viewModel.questionResponse.removeObservers(this) 也没有用。
但是在我删除文本视图并清除属性值的函数中添加 viewModel.questionResponse = MutableLiveData() 解决了我的问题。
【问题讨论】:
-
只是不调用它两次..
-
或者留下一些已经观察到的标志
-
您应该在 Activity 的
onCreate()方法中只调用一次viewModel.questionResponse.observe(...)。 -
你不应该在一个被多次调用的函数中开始观察
标签: android kotlin mvvm android-livedata observers