繁体   English   中英

设置自定义对话框的时间

[英]Set time for Custom Dialog

当用户登录注册按钮时,会出现一个自定义对话框,用户移动到菜单。 但就我而言,Costum对话框只显示一秒钟,然后用户转到下一个布局。

如何设置自定义对话框的时间?

这是我的代码:

    buttonRegister.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            new Thread(new Runnable() {
                @Override
                public void run() {

                    final String name = inputName.getText().toString();
                    final String mail = inputEmail.getText().toString();
                    final String password = inputPassword.getText()
                            .toString();

                    PatientFunctions patientFunction = new PatientFunctions();

                    json = patientFunction.registerPatient(name, mail,
                            password);

                    try {
                        if (json.getString(KEY_SUCCESS) != null) {

                            String res = json.getString(KEY_SUCCESS);
                            if (Integer.parseInt(res) == 1) {
                                Intent main = new Intent(
                                        getApplicationContext(), Main.class);
                                main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(main);
                                finish();
                            }
                        }
                    } catch (NumberFormatException e) {
                        e.printStackTrace();
                    }

                    catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }).start();

            CustomizeDialog customizeDialog = new CustomizeDialog(RegisterPatient.this);
            customizeDialog.show(); 

                            Handler handler = null;
            handler = new Handler(); 
            handler.postDelayed(new Runnable(){ 
                 public void run(){
                     customizeDialog.cancel();
                     customizeDialog.dismiss();
                 }
            }, 3000);

        }
    });

有许多好的选项,包括AlarmManagerTimerTimerTask

您可以像这样使用处理程序

Handler handler = null;
handler = new Handler(); 
handler.postDelayed(new Runnable(){ 
     public void run(){
         customdialog.cancel();
         customdialog.dismiss();
     }
}, 500);

执行这些过程的最佳方法是使用AsyncTask

并覆盖onPreExecutedoInBackground以及onPostExecute

官方指南

实现doInBackground()回调方法,该方法在后台线程池中运行。 要更新UI,您应该实现onPostExecute(),它从doInBackground()传递结果并在UI线程中运行,因此您可以安全地更新UI。 然后,您可以通过从UI线程调用execute()来运行该任务

private class Registration extends AsyncTask<String, Void, String>{

    CustomizeDialog customizeDialog;
    @Override
    protected void onPreExecute() {
        // show ur dialog
        customizeDialog = new CustomizeDialog(RegisterPatient.this);
        customizeDialog.show(); 
    }
    @Override
    protected String doInBackground(String... params) {

        final String name = params[0];
        final String email = params[1];
        final String password = params[2];

        PatientFunctions patientFunction = new PatientFunctions();

        json = patientFunction.registerPatient(name, mail,
                password);

        try {
            if (json.getString(KEY_SUCCESS) != null) {

                String res = json.getString(KEY_SUCCESS);
                return res;
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        catch (JSONException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected void onPostExecute(String result) {
        if (Integer.parseInt(res) == 1) {
            if(customizeDialog != null)
                customizeDialog.dismiss();

            Intent main = new Intent(
                    getApplicationContext(), Main.class);
            main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            //move to the next activity
            startActivity(main);
            finish();
        }
    }

}

编辑

然后按照你想要的方式执行它

buttonRegister.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                final String name = inputName.getText().toString();
                final String mail = inputEmail.getText().toString();
                final String password = inputPassword.getText()
                        .toString();
                new Registration().execute(name,mail,password);
            }
     });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM