onChanged
我正在更新 UI 并取消 progressDialog
但每次我旋转屏幕时,进度对话框都会出现,并且 ProgressDialog 不会关闭。
如果数据没有变化,如何处理进度对话框?
final ProgressDialog pd;
pd=new ProgressDialog(mContext);
pd.setMessage(mContext.getString(R.string.updating));
pd.show();MutableLiveData<BillGetResponse> DisplayByIdLiveData=viewModelForBillDisplay.getBillGetResponseDisplayById(txnRequest);
if (display_by_id) {
DisplayByIdLiveData.observe(BillDisplayFragment.this, new Observer<BillGetResponse>() {
@Override
public void onChanged(@Nullable BillGetResponse billGetResponse) {
if (btnRecordDisableEnabled != null)
btnRecordDisableEnabled.enable();
pd.dismiss(); }
但每次 onChanged
没有被触发并且进度对话框不会停止!!
最佳答案
您需要其他观察者来处理指示是否必须显示 ProgressDialog 的 bool 值。这是代码:
viewModel.getIsLoading().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(@Nullable Boolean aBoolean) {
if(aBoolean){
pd.show();
}else{
pd.dismiss();
}
}
});
在您的 viewModel 中添加 getIsLoading 方法:
public LiveData<Boolean> getIsLoading(){
LiveData<Boolean> isLoading=yourRepository.getIsLoading();
return isLoading;
}
然后在您的存储库中添加:
private final MutableLiveData<Boolean> isLoading=new MutableLiveData<>();
并在开始和完成数据上传时将值设置为isLoading。
希望对你有帮助。
关于android - 如何在屏幕旋转时使用 ProgressBar 处理 Android LiveData(ViewModel)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239657/