我的应用程序与 MVVM + 改造 + 匕首集成
对于 ViewModel,我使用 MutableLiveData 向 Fragment 和 ViewModel 注册观察者
因此,当视图加载时,它调用视图模型并调用 Web 服务,然后onChnaged
观察者的函数将填充数据,但是当我添加一个按钮单击并调用相同的函数时,它的行为异常这里是代码示例。
ViewModel
private MediatorLiveData<Resource<PostCartResponse>> postCartResponse
= new MediatorLiveData<>();
public LiveData<Resource<PostCartResponse>> postProductToCart(
final PostCart postCart) {
postCartResponse.addSource(this.cartRepository.postCart(postCart),
new Observer<Resource<PostCartResponse>>() {
@Override
public void onChanged(@Nullable Resource<PostCartResponse> response) {
postCartResponse.setValue(response);
}
});
return postCartResponse;
}
Fragment
productDetailsViewModel.postProductToCart(new PostCart(1, generatedSku))
.observe(this, new Observer<Resource<PostCartResponse>>() {
@Override
public void onChanged(@Nullable Resource<PostCartResponse> response) {
if (response.status == Status.SUCCESS) {
Timber.d("SUCCESS");
} else if (response.status == Status.INVALID_DATA) {
Timber.d("FAIL");
}
}
});
因此,它第一次正确调用并记录成功,但可以说如果我再次按下按钮,最初它会在片段中打印成功,然后再次打印成功
对于这种不寻常的行为有任何想法。