我有一个名为overrideObserver的观察者,我想在烤面包片显示后将其删除(当前,每当我回想该片段时,烤面包片就会一直显示)。尝试使用removeObserver方法,但无法正常工作。希望任何人都能提供帮助。谢谢。
private void overrideObserver() {
overrideViewModel.getBaseResp().observe(requireActivity(), new Observer<BaseResponseModel>() {
@Override
public void onChanged(BaseResponseModel baseResponseModel) {
Toast.makeText(context, baseResponseModel.getErrorMessage(), Toast.LENGTH_SHORT).show();
overrideViewModel.getBaseResp().removeObservers(requireActivity());
}
});
}
这是getBaseResp所做的
public LiveData<BaseResponseModel> getBaseResp() {
if(baseResp == null) {
baseResp = new MutableLiveData<>();
}
return baseResp;
}
您应该记住传递给observe
的观察者的确切实例:
final Observer<BaseResponseModel> observer = Observer<BaseResponseModel>() { ... }
overrideViewModel.getBaseResp().observer(requireActivity(), observer);
然后在停止观察时将该实例传递给removeObsever()
:
overrideViewModel.getBaseResp().removeObserver(observer);
[如果只希望在特定时间点由LiveData发出当前值,请考虑不使用观察器,而直接使用getValue()访问该值:
overrideViewModel.getBaseResp().getValue()