【问题标题】:ProgressDialog does not want to update the messageProgressDialog 不想更新消息
【发布时间】:2011-04-26 05:08:36
【问题描述】:

我刚刚尝试实现一个进度对话框,但在我漫长而复杂的计算过程中,我遇到了一些更改文本的问题。

for (String aString:myStringArray){
    Log.v(TAG, aString);
    mProgressDialog.incrementProgressBy(1);
    mProgressDialog.setMessage(aString);
}

我可以清楚地看到 incrementProgressBy 正在工作并且我的对话框正在更新,但消息没有改变。

你知道如何让它发挥作用吗?

非常感谢。

【问题讨论】:

    标签: android progressdialog


    【解决方案1】:

    刚刚找到答案,很好用:

    runOnUiThread(changeMessage);
    

    使用该代码:

    private Runnable changeMessage = new Runnable() {
        @Override
        public void run() {
            //Log.v(TAG, strCharacters);
            m_ProgressDialog.setMessage(strCharacters);
        }
    };
    

    【讨论】:

    • 这不起作用。我尝试从 UI 线程更新消息,但它没有改变。
    • 是的,这很容易帮助解决“这不起作用”作为消息:-p
    • @Waza_Be 抱歉这么直接 :D 实际上我尝试了您的代码来更新 ProgressDialog 的消息,但 ProgressDialog 只是挂起旧消息。我正在尝试更新来自doInBackground()AsyncTask 的消息。知道怎么做吗?
    • 评论您的原始答案:这正是我在遇到刷新问题时所做的。就我而言,这是因为在显示对话框之前未设置消息,之后无法添加。通过使用相同的代码放置初始消息,稍后更新它可以正常工作。
    【解决方案2】:

    我循环上传图片到Firebase并更新ProgressDialog每张图片:

    (我在Fragment,所以我在调用runOnUiThread()之前使用getActivity()

    List<Bitmap> bitmaps;
    int picCounter = 1;
    ...
    
    progressDialog = ProgressDialog.show
     (getContext(), "sending...", "just a minute", false, false);
    
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < bitmaps.size(); i++) {
    
                String filename = String.valueOf(i);
    
                uploadPic(bitmaps.get(i), "img" + filename, new MyCallback() {
                    @Override
                    public void onFinish() {
                        picCounter++;
                        Objects.requireNonNull(getActivity()).runOnUiThread(new Runnable() {
                            public void run() {
                                progressDialog.setTitle ("upoading " + picCounter + "image from " + bitmaps.size());
                            }
                        });
                    }
                });
            }
       }
    }).start();
    

    上传图片方法:

    public interface MyCallback { void onFinish ();}
    
    private void uploadPic(final Bitmap bitmap, final String fileName, final MyCallback callback) {
       ... // uploading to firebase and then:
       callback.onFinish();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      相关资源
      最近更新 更多