Android ProgressDialog setProgress()不起作用
我使用以下代码从android上的服务器下载文件 下载活动的代码: 代码按预期工作,但是progressDialog.setProgressProgressProgress;什么也看不出来 logs by Log.d中显示的输出与预期一致Android ProgressDialog setProgress()不起作用,android,progressdialog,Android,Progressdialog,我使用以下代码从android上的服务器下载文件 下载活动的代码: 代码按预期工作,但是progressDialog.setProgressProgressProgress;什么也看不出来 logs by Log.d中显示的输出与预期一致 我不知道问题出在哪里?正如我在第一条评论中提到的,请尝试使用我假设的工作线程的构造函数得到的处理程序。您可以访问它,因为您编写了superhandler 将此代码放在要更新进度对话框的位置 handler.post(new Runnable() {
我不知道问题出在哪里?正如我在第一条评论中提到的,请尝试使用我假设的工作线程的构造函数得到的处理程序。您可以访问它,因为您编写了superhandler 将此代码放在要更新进度对话框的位置
handler.post(new Runnable() {
@Override
public void run() {
progressDialog.setProgress(progress);
}
});
感谢所有帮助我的人,亲爱的@Anton Makov
private class DownloadReceiver extends ResultReceiver {
Handler mhandler ;
public DownloadReceiver(Handler handler) {
super(handler);
mhandler = handler;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == DownloadService.UPDATE_PROGRESS) {
final int progress = resultData.getInt("progress");
Log.d("PROGRESS", String.valueOf(progress));
mhandler.post(new Runnable() {
@Override
public void run() {
progressDialog.setProgress(progress);
}
});
if (progress == 100) {
progressDialog.dismiss();
}
}
}
}
这是最终的解决方案不确定什么是ResultReceiver,但我认为您应该使用处理程序来更新进度对话框,只有uiThread可以更改/修改UI元素。尝试使用hanlder.post并将setProgress放在@SantanuSur的可能副本中我已经添加了关于这个问题的更新。。。我添加了setMax和setUndefiniteFalse,没有阅读我发布的答案!!链接
private class DownloadReceiver extends ResultReceiver {
Handler mhandler ;
public DownloadReceiver(Handler handler) {
super(handler);
mhandler = handler;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == DownloadService.UPDATE_PROGRESS) {
final int progress = resultData.getInt("progress");
Log.d("PROGRESS", String.valueOf(progress));
mhandler.post(new Runnable() {
@Override
public void run() {
progressDialog.setProgress(progress);
}
});
if (progress == 100) {
progressDialog.dismiss();
}
}
}
}