簡體   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