【发布时间】:2019-09-18 19:14:45
【问题描述】:
我正在尝试将MutableLiveData 与数据库中的预填充值一起使用,但Observer 总是将null 作为book 返回。我需要将其保留为MutableLiveData,而不是LiveData,因为我必须在某些地方以编程方式设置它。因此,我使用从数据库中检索到的LiveData 调用setValue。代码:
ViewModel:
private final MutableLiveData<Book> bookLiveData;
public MyViewModel(@NonNull Application application) {
super(application);
...
book = new MutableLiveData<>();
bookLiveData.setValue(bookRep.getBookLiveData().getValue());
....
}
Fragment:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
...
getActivity().getBookLiveData().observe(getViewLifecycleOwner(), book -> {
... // When fragment is created, book is always null here
});
}
有人能告诉我为什么Book 在观察者中为空吗?我认为Observer 会在bookRep.getBookLiveData() 完成并检索到值时收到通知。感谢您的帮助。
【问题讨论】:
标签: viewmodel observer-pattern android-livedata mutablelivedata