【问题标题】:How can add a delay to Progress Dialog - Java - Android - Android Studio如何向进度对话框添加延迟 - Java - Android - Android Studio
【发布时间】:2020-11-28 13:31:07
【问题描述】:

我想让一个进度对话框出现 2 或 3 秒。
除了说进度之外,它实际上不会做任何事情。
我想在进度条中添加一个延迟。这怎么可能成功?
它最初出现但时间很短。
我的代码如下:

     private void registerNewAccount(String username,String email, String password, String mobile, String gender){
            final ProgressDialog progressDialog = new ProgressDialog( RegisterActivity.this);
            progressDialog.setCancelable(false);
            progressDialog.setIndeterminate(false);
            progressDialog.setTitle("Registering New Account");
            progressDialog.show();
            String uRl = "http://192.168.1.6/Projects/LoginRegisterAndroid/register.php";
            StringRequest request = new StringRequest(Request.Method.POST, uRl, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    if (response.equals("Successfull")){
                        progressDialog.dismiss();
                        Toast.makeText(RegisterActivity.this, response, Toast.LENGTH_SHORT).show();
                        startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
                        finish();
                    }
                    else{
                        progressDialog.dismiss();
                        Toast.makeText(RegisterActivity.this, response, Toast.LENGTH_SHORT).show();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();
                    Toast.makeText(RegisterActivity.this, error.toString(), Toast.LENGTH_SHORT).show();
                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    HashMap<String,String> param = new HashMap<>();
                    param.put("username", username);
                    param.put("email", email);
                    param.put("psw", password);
                    param.put("mobile", mobile);
                    param.put("gender", gender);
                    return param;
                }
            };
    
            request.setRetryPolicy(new DefaultRetryPolicy(30000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            MySingleton.getmInstance(RegisterActivity.this).addToRequestQueue(request);
        }

}

【问题讨论】:

  • 在收到响应时不要关闭 progressDialog,而是尝试运行延迟任务(可能使用新线程),该任务使用 Thread#sleep 等待几秒钟,然后调用 progressDialog.dismiss();

标签: java android android-studio delay progressdialog


【解决方案1】:

我建议使用Handler 或许:

new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
            // dismiss progress dialog here 
        }
}, 3000)

这可以在您的 Volley 请求中的 onRepsonse 方法中完成

【讨论】:

  • 更新处理程序以包含构造函数参数 Looper.getMainLooper(),因为 Handler() 已弃用。
  • 感谢您的建议。我刚试了一下,它工作正常。谢谢!
猜你喜欢
  • 2011-05-11
  • 2011-07-29
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多