一天的美好时光。
我正在尝试制作应该将文件上传到服务器并在ProgressDialog
中显示上传进度的应用程序。
这是我到目前为止的代码:
为上传程序
ProgressDialog
private void createUploadingDialog(int filesCount) {
uploadingDialog = new ProgressDialog(getActivity());
uploadingDialog.setIndeterminate(true);
loadingDialog.setMessage(getString(R.string.upload_progress, 0, filesCount));
loadingDialog.show();
}
解除ProgressDialog
上传程序
private void dismissUploadingDialog() {
if (uploadingDialog.isShowing())
uploadingDialog.dismiss();
}
更新ProgressDialog
上传程序
private void updateUploadingDialog(final String dialogMessage) {
class UpdateDialog implements Runnable {
private String messageString;
private UpdateDialog(String ms) { messageString = ms; }
public void run() {
uploadingDialog.setMessage(messageString);
}
}
getActivity().runOnUiThread(new UpdateDialog(dialogMessage));
}
致电创建对话框
createUploadingDialog(imagesPathsArray.size());
致电解除对话
dismissUploadingDialog();
调用更新对话框onSuccess
updateUploadingDialog(getString(R.string.upload_progress, i, imagesPathsArray.size()));
调用更新对话框onFailure
updateUploadingDialog(getString(R.string.retrying_request));
对话框以片段形式显示。要将图像发送到服务器,我正在使用Retrofit2。
当我进行对话框的初始设置时,消息设置正确(显示总文件和当前文件),但是,在进行更新调用时,消息不会更新。出于某种原因,不会抛出任何错误,如果我添加Log.d
,它甚至会显示该方法被调用。
感谢您的帮助!
答案 0 :(得分:0)
我认为你只调用一次更新进度,你如何列出进展状态改变监听器?如果你想使用你必须连续调用updateUploadingDialog这不是一个好的程序
你必须在asynctask中编写上传程序并在onProgressUpdate()方法中更新进度
on preExecute初始化进度条,在doinbackground上传文件,在onProgressUpdate上更新进度条,在postexecute上执行上传后你想做的事情
希望这有帮助
答案 1 :(得分:0)
根据您没有使用AsyncTask,您无法获得onProgressUpdate功能的机会。因此,您必须手动更新进度条状态,就像使用自己的线程一样,您已经这样做了。但是,我使用下面的源代码解决了我的问题,你可以检查它:
range.lenght = 4