Java 使用截击进行网络操作时如何显示ProgressDialog
我正在开发一个android应用程序,我对使用Java 使用截击进行网络操作时如何显示ProgressDialog,java,android,android-volley,Java,Android,Android Volley,我正在开发一个android应用程序,我对使用volley库执行网络http调用非常感兴趣 但我的问题是,我发现这个库在不同的后台线程中进行操作,然后我如何在http请求开始执行时显示ProgressDialog,然后在执行后将其关闭 RequestQueue rq = Volley.newRequestQueue(this); StringRequest postReq = new StringRequest(Request.Method.POST, "http://httpbin.org/p
volley
库执行网络http调用非常感兴趣
但我的问题是,我发现这个库在不同的后台线程中进行操作,然后我如何在http请求开始执行时显示ProgressDialog
,然后在执行后将其关闭
RequestQueue rq = Volley.newRequestQueue(this);
StringRequest postReq = new StringRequest(Request.Method.POST, "http://httpbin.org/post", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
tv.setText(response); // We set the response data in the TextView
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Error ["+error+"]");
}
});
RequestQueue rq=Volley.newRequestQueue(this);
StringRequest postReq=新的StringRequest(Request.Method.POST)http://httpbin.org/post,新的响应。侦听器(){
@凌驾
公共void onResponse(字符串响应){
tv.setText(response);//我们在TextView中设置响应数据
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
System.out.println(“错误[“+错误+”]);
}
});
提前谢谢。这很简单。在队列中添加请求对象后,启动进度对话框
//add the request to the queue
rq.add(request);
//initialize the progress dialog and show it
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Fetching The File....");
progressDialog.show();
然后在收到服务器的响应后关闭该对话框
StringRequest postReq = new StringRequest(Request.Method.POST, "http://httpbin.org/post", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
tv.setText(response); // We set the response data in the TextView
progressDialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(“Volly Error”,”Error: ”+error.getLocalizedMessage());
progressDialog.dismiss();
}
});
StringRequest postReq=新的StringRequest(Request.Method.POST)http://httpbin.org/post,新的响应。侦听器(){
@凌驾
公共void onResponse(字符串响应){
tv.setText(response);//我们在TextView中设置响应数据
progressDialog.disclose();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“Volly Error”,“Error:+Error.getLocalizedMessage());
progressDialog.disclose();
}
});
您可以根据请求显示一个,然后在onResponse或onErrorResponse中取消它。@greenapps您能给我举个例子吗?有什么问题吗?只需在发布代码之前创建一个ProgressDialog。或者在您将postReq放入队列的那一刻。让他看看。或者是否存在onStart事件?如果在方向更改期间重新创建活动而不使用清单中的configChanges,我们如何处理进度对话框?此答案不是一个完整的解决方案。如果你改变方向怎么办?如果按取消进度-网络操作从何处取消?这是一个非常老的问题,与此问题和解决方案有些无关。如果您不小心处理,方向更改可能会导致任何活动/视图出现问题。有关更多信息,请参见此处:。您也可以在SO中查看有关此问题的讨论。一个例子是: