San*_*Sur 2 android progressdialog viewmodel
onChanged我正在更新 UI 并取消 ,progressDialog但每次我旋转屏幕时都会显示进度对话框并且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(); }
Run Code Online (Sandbox Code Playgroud)
但是每次onChanged都没有触发并且进度对话框不会停止!
fva*_*via 10
您需要其他观察者来处理指示是否必须显示 ProgressDialog 的布尔值。这是代码:
viewModel.getIsLoading().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(@Nullable Boolean aBoolean) {
if(aBoolean){
pd.show();
}else{
pd.dismiss();
}
}
});
Run Code Online (Sandbox Code Playgroud)
在您的 viewModel 添加 getIsLoading 方法:
public LiveData<Boolean> getIsLoading(){
LiveData<Boolean> isLoading=yourRepository.getIsLoading();
return isLoading;
}
Run Code Online (Sandbox Code Playgroud)
并在您的存储库中添加:
private final MutableLiveData<Boolean> isLoading=new MutableLiveData<>();
Run Code Online (Sandbox Code Playgroud)
并在开始和完成数据上传时将值设置为 isLoading。
我希望它能帮助你。
| 归档时间: |
|
| 查看次数: |
5944 次 |
| 最近记录: |