android - 如何在屏幕旋转时使用 ProgressBar 处理 Android LiveData(ViewModel)?

标签 android viewmodel progressdialog

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/

相关文章:

swift - 我必须在 SwiftUI 中使用 ObservableObject 吗?

ios - 如何将模型数据从 ViewController 传递到 ViewModel

data-binding - MVVM 在 ViewModel 构建期间或之后加载数据?

Android:如何更改 ProgressDialog 的文本颜色?

android - 如何使用数组列表中的数据填充自定义布局 ListView

android - 处理 android 应用程序中的 textview 和 webview 链接

android - 为什么在 firebase onAuthStateChanged 中完成 Activity 时最近的应用程序中没有屏幕截图

android - 当我在 android 中使用 ADB 时,如何获取恢复出厂设置的日期?

android - 离开助手类时关闭进度对话框

java - 如何摆脱 "has leaked window"?