【发布时间】:2019-03-27 00:34:31
【问题描述】:
我尝试将值提取到基类中并让 ViewModel 对其进行扩展。但是,当我这样做时,观察者不会坚持使用 LiveData。例如,当我有一个带有 LiveData 的父类时:
class Base : ViewModel() {
private val _ data = MutableLiveData()
val data: LiveData = _data
fun someEvent(foo: Foo) { // update _data }
}
class Derived : Base()
class Derived1 : Base()
然后获取其中一个 ViewModel 并观察 data:
class Frag : Fragment {
onViewCreated() {
// get Derived, ViewModelProviders.of ...etc
derived.data.observe { // Doesn't observe changes }
}
}
调用 Base.someEvent(foo) 不会通知 Fragment 中的 LiveData。
我想避免引用两个子类并在每个子类上调用someEvent。需要注意的一点是,我使用的是单个 Activity 方法,并且所有 ViewModel 都是 Activity 范围的。
【问题讨论】:
-
// update _data是一段关键的代码。你到底在做什么?
标签: android kotlin android-architecture-components android-livedata