Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示进度对话框,但不显示进度条,消息为';t更新_Java_Android_Progressdialog - Fatal编程技术网

Java 显示进度对话框,但不显示进度条,消息为';t更新

Java 显示进度对话框,但不显示进度条,消息为';t更新,java,android,progressdialog,Java,Android,Progressdialog,我有一个从片段调用的类。会调用On progress update,但消息不会更新。我也没有看到任何进度条或微调器。只有标题和消息,看到了一些类似的问题,但是没有任何进度条不显示的地方。此外,我的消息在onProgressUpdate中根本不会更新,但打印出的值确实显示它在onProgressUpdate中递增 编辑:下面是我如何开始任务的 DownloadFilesTask download = new DownloadFilesTask(); download.execute(urls.to

我有一个从片段调用的类。会调用On progress update,但消息不会更新。我也没有看到任何进度条或微调器。只有标题和消息,看到了一些类似的问题,但是没有任何进度条不显示的地方。此外,我的消息在onProgressUpdate中根本不会更新,但打印出的值确实显示它在onProgressUpdate中递增

编辑:下面是我如何开始任务的

DownloadFilesTask download = new DownloadFilesTask();
download.execute(urls.toArray(new String[urls.size()]));
这是上课时间

private class DownloadFilesTask extends AsyncTask<String, Integer, Long> {

ProgressDialog progressDialog;

@Override
protected void onPreExecute()
{
    progressDialog = ProgressDialog.show(getActivity(), "Downloading","Downloaded 0/"+urls.size(), false);
    progressDialog.setProgress(0);
    progressDialog.setMax(urls.size());
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
}

@Override
protected Long doInBackground(String[] urls) {
    int count = urls.length;
    long totalSize = 0;
    for (int i = 0; i < count; i++) {
            //Do things in background here
            publishProgress(new Integer[] {i});
    }
    return totalSize;
}

@Override
protected void onProgressUpdate(final Integer... progress) {
    System.out.println(progress[0]); //This does print correctly
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            progressDialog.setProgress(progress[0]);
            progressDialog.setMessage("Downloaded "+ progress[0] +"/"+urls.size());
        }
    });
}

@Override
protected void onPostExecute(Long result) {
    progressDialog.dismiss();
    Toast t = Toast.makeText(getActivity(), "Downloaded", Toast.LENGTH_LONG);
    t.show();
}
私有类下载文件任务扩展异步任务{
进行对话进行对话;
@凌驾
受保护的void onPreExecute()
{
progressDialog=progressDialog.show(getActivity(),“下载”,“下载0/”+URL.size(),false);
progressDialog.setProgress(0);
progressDialog.setMax(url.size());
progressDialog.setProgressStyle(progressDialog.STYLE_水平);
}
@凌驾
受保护的长doInBackground(字符串[]URL){
int count=url.length;
长totalSize=0;
for(int i=0;i

}不确定确切原因,但不需要在
runnable
上设置进度,因为
onProgressUpdate
将在UI线程上运行

试着替换

getActivity().runOnUiThread(新的Runnable()){
@凌驾
public void run(){
progressDialog.setProgress(progress[0]);
progressDialog.setMessage(“下载”+进度[0]+“/”+URL.size());
} 
});

progressDialog.setProgress(进度[0]);
progressDialog.setMessage(“下载”+进度[0]+“/”+URL.size())


另外-您是否正在
doInbackground()
中进行网络工作,否则我们无法看到将在
onPostExecute()上被忽略的进度问题是ProgressDialog的初始化方式

将onPreExecute替换为以下内容:

@Override
protected void onPreExecute() {
    progressDialog = new ProgressDialog(activity);
    progressDialog.setTitle("Downloading");
    progressDialog.setMessage("Downloaded 0/" + urls.size());
    progressDialog.setIndeterminate(false);
    progressDialog.setProgress(0);
    progressDialog.setMax(urls.size());
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.show();
}
本质上,在调用show之前,需要调用
setProgressStyle


此外,您可以删除
onProgressUpdate
中的
runOnUiThread
代码,因为
onProgressUpdate
是在UI线程上调用的。

您是如何启动任务的,请显示代码。编辑它以显示我启动它的方式,这只是启动任务的一般方式,因此我没有包含它。这有帮助吗?我以前确实有过,但它不起作用,所以我决定试试runonuithread。我正在下载图像,所以是的,确实需要一段时间。对话框显示,但没有进度条,只有标题。一旦下载完图像,它就会关闭。可以先尝试初始化进度对话框,然后在
onPreExecute()
Wow的末尾调用
show()
,这是一个很简单的问题。非常感谢,我会在22小时内给予赏金,我很乐意帮忙-这是一个棘手的错误。如果您感兴趣,请查看ProgressDialog源代码-您将了解为什么会遇到这个问题。