【问题标题】:Android progressBar doesn't set progress after call Retrofit调用 Retrofit 后,Android progressBar 不设置进度
【发布时间】:2017-06-08 16:49:41
【问题描述】:

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

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 的 Dialog。

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

这是改造调用的代码

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 不起作用

感谢您的帮助

问候

编辑:我添加了“帖子”以更新进度但仍然无法正常工作

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

}

该方法在 CustomDialogLoad 类中

【问题讨论】:

    标签: java android progress-bar retrofit progressdialog


    【解决方案1】:

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

    基本上,改变:

     d.setProgress(progress);
    

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

    【讨论】:

    • 我更改了代码,但仍然无法正常工作,我使用“setProgress”方法编辑了问题的代码
    • 尝试在while 循环和run 方法中使用断点对其进行调试。现在不明白为什么它不起作用,抱歉。
    【解决方案2】:

    像这样更改您的代码

    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();
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多