ProgressDialog不想更新消息

时间:2010-10-16 00:28:55

标签: android progressdialog

我只是尝试实现progressdialog,在长期复杂的计算中,我有一些问题需要更改文本。

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

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

关于如何做到这一点的任何想法?

非常感谢。

2 个答案:

答案 0 :(得分:57)

刚刚找到了答案,这工作正常:

runOnUiThread(changeMessage);

使用该代码:

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

答案 1 :(得分:0)

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

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

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

uploadPic 方法:

public interface MyCallback { void onFinish ();}

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