بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ایجاد دیالوگ سعی مجدد در اتصال به سرور در کد volley
با سلام
هنگامی که دستگاه کاربر به متصل نیست و کاربر برنامه رو اجرا میکنه میخوام مثل خیلی از برنامه ها وقتی ProgresBar اجرا شد و خطای عدم اتصال رو نشون دادم یه دیالوگ نمایش داده بشه که با زدن دکمه تایید دوباره ProgresBar لود کنه و دوباره به سرور متصل بشه و الی آخر..
اینم کدم ...
StringRequest request = new StringRequest(Request.Method.POST, G.url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("response", response.toString());
layoutProgres.setVisibility(View.GONE);
pager.setVisibility(View.VISIBLE);
// pDialog.hide();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error: " + error.getMessage());
// pDialog.hide();
layoutProgres.setVisibility(View.GONE);
imageViewNoConnect.setVisibility(View.VISIBLE);
final Dialog dialog = new Dialog(ActivityMain.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.dialog_exit);
TextView txt = (TextView) dialog.findViewById(R.id.textView_dialog_exit);
txt.setText("سعی مجدد برای ارتباط با سرور..." + " " + error.toString());
Button btn_ok = (Button) dialog.findViewById(R.id.btn_ok_dialog);
btn_ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
dialog.dismiss();
اینجا به چه شکلی دوباره این کد رو فراخوانی کنم
} }); Button btn_no = (Button) dialog.findViewById(R.id.btn_no_dialog);
btn_no.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0)
{ dialog.dismiss(); } }); dialog.show(); } })
{ Map<String, String> params = new HashMap<String, String>();
@Override protected Map<String, String> getParams()
{ params.put("id", "1"); return params; }
@Override public Map<String, String> getHeaders() throws AuthFailureError
{ params.put("id", "1"); return params; } };
RequestQueue queue = Volley.newRequestQueue(ActivityMain.this);
queue.add(request);
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
atf
9 سال پیش
0
0
شما باید از AsyncTask استفاده کنید
private class AsyncCaller extends AsyncTask<Void, Void, Void>{
ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
//این قسمت قبل از دریافت اطلاعات از سرور اجرا میشه
pdLoading.setMessage("\tLoading...");
pdLoading.show();
}
@Override
protected Void doInBackground(Void... params) {
//دریافت اطلاعات از سرور تو این قسمت باید انجام بشه
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//زمانی که اطلاعات از سرور دربافت میشه
pdLoading.dismiss();
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .