Android progressBar 在调用 Retrofit 后没有设置进度

Android progressBar doesn't set progress after call Retrofit

我正在尝试模拟改造调用的进度,因此在执行调用之前我以这种方式开始进度:

public void runSimulateProgress(final CustomDialogLoad d){
    new Thread(new Runnable() {
        @Override
        public void run() {
            if (d != null){
                int progress = 0;
                while (d.getProgress() < 99){
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    progress = progress+10;
                    d.setProgress(progress);
                }

            }
        }
    }).start();

}

CustomDialogLoad 是一个带有进度和 TextView 的对话框。

所以,当通话结束时,我想将进度设置为 100,但进度条没有改变,我尝试以手动方式对进度进行任何更改,但进度条不想更新.

这里是retrofit调用的代码

dialogProgress.runSimulateProgress(dialogProgress);
final SaveRutaVisitaService saveRutaVisitaService =       restAdapter.create(SaveRutaVisitaService.class);
saveRutaVisitaService.saveRutaVisita(multipartTypedOutput, new        Callback<Response>() {
        @Override
        public void success(Response result, Response response) {
       dialogProgress.setProgress(100)

    }   @Override
        public void failure(RetrofitError retrofitError) {
       dialogProgress.setProgress(100)}
    }

我试图根据这个问题取得真正的进步

Android Retrofit - onProgressUpdate for showing Progress Notification

但我对 multiPart 不起作用

感谢任何帮助

问候

编辑:我添加了 "post" 来更新进度,但仍然无法正常工作

public void setProgress(final int p){
    mRingProgressBar.post(new Runnable() {
        @Override
        public void run() {
            mRingProgressBar.setProgress(p);
        }
    });

}

该方法在 CustomDialogLoad 内部 class

您正试图从另一个线程更改 View。检查这个问题 How to set text of text view in another thread

基本上,改变:

 d.setProgress(progress);

d.post(new Runnable() {
    public void run() {
        d.setProgress(progress);
    } 
}

像这样更改您的代码

public void runSimulateProgress(final CustomDialogLoad d){
new Thread(new Runnable() {
    @Override
    public void run() {
        if (d != null){
            int progress = 0;
            while (d.getProgress() < 99){
                try {
         ((Activity) ctx).runOnUiThread(new Runnable() {
            public void run() {
                progress = progress+10;
              d.setProgress(progress);
            }
        }
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }
    }
}).start();

}