Android 如何取消“警报”对话框和“返回时的活动”

Android 如何取消“警报”对话框和“返回时的活动”,android,Android,我的应用程序中有一个用于身份验证的警报对话框。当我按下emulator中的后退按钮时,警报对话框消失,但活动仍在运行。现在,我需要取消警报框,并同时按下背面的活动,然后转到移动主屏幕。Iam使用以下代码: @Override public void onStart() { super.onStart(); final SharedPreferences prefs = PreferenceManager

我的应用程序中有一个用于身份验证的警报对话框。当我按下emulator中的后退按钮时,警报对话框消失,但活动仍在运行。现在,我需要取消警报框,并同时按下背面的活动,然后转到移动主屏幕。Iam使用以下代码:

 @Override
        public void onStart() {
            super.onStart();        
            final SharedPreferences prefs = PreferenceManager
                    .getDefaultSharedPreferences(getApplicationContext());
            logutils.createlog();
            if (prefs.getString(getResources().getString(R.string.token), null) != null) {
                setContentView(R.layout.mainscreen);
                showButtons();
            } else {
                createDB();
                status = "completed";
                SharedPreferences.Editor prefsEditor = prefs.edit();
                prefsEditor.putString("status", status);
                prefsEditor.commit();
                final AlertDialog.Builder alert = new AlertDialog.Builder(this);
                LinearLayout login = new LinearLayout(this);
                TextView tvUserName = new TextView(this);
                TextView tvPassword = new TextView(this);
                TextView tvURL = new TextView(this);
                final EditText etUserName = new EditText(this);
                final EditText etPassword = new EditText(this);
                final EditText etURL = new EditText(this);
                if (dbhostname == null) {
                    etURL.setText(null);
                } else {
                    etURL.setText(dbhostname);
                }
                login.setOrientation(1); // 1 is for vertical orientation
                tvUserName.setText(getResources().getString(R.string.username));
                tvPassword.setText(getResources().getString(R.string.password));
                tvURL.setText("SiteURL");
                login.addView(tvURL);
                login.addView(etURL);
                login.addView(tvUserName);
                login.addView(etUserName);
                login.addView(tvPassword);
                etPassword.setInputType(InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                login.addView(etPassword);
                alert.setView(login);
                alert.setTitle(getResources().getString(R.string.login));
                alert.setCancelable(true);
                alert.setPositiveButton(getResources().getString(R.string.login),
                        new DialogInterface.OnClickListener() {
                            public void onClick(final DialogInterface dialog,
                                    int whichButton) {                          
                                strhwdXml = etURL.getText().toString();
                                strUserName = etUserName.getText().toString();
                                XmlUtil.username = strUserName;
                                strPassword = etPassword.getText().toString();
                                if ((strUserName.length() == 0)
                                        && (strPassword.length() == 0)
                                        && (strhwdXml.length() == 0)) {
                                    Toast.makeText(
                                            getBaseContext(),
                                            getResources().getString(
                                                    R.string.userPassword),
                                            Toast.LENGTH_SHORT).show();
                                    onStart();
                                } else {
                                    new doprogress().execute();
                                    // doAuthentication();
                                }                           
                            }
                        });
                alert.setNegativeButton(getResources().getString(R.string.exit),
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                                dialog.cancel();
                                System.exit(0);
                            }
                        }).show();          
                alert.setOnCancelListener(new OnCancelListener() {
                    public void onCancel(DialogInterface dialog) {
                        // TODO Auto-generated method stub
                        finish();
                        System.exit(0);
                    }              
                });
            }
        }

如果你能更改代码

new AlertDialog(Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener)


new DialogInterface.OnCancelListener(){
                    @Override
                    public void onCancel(DialogInterface dialog) {

                        finish();

                    }
                }
或用于
AlertDialog.Builder

setOnKeyListener(DialogInterface.OnKeyListener onKeyListener)

如果你能更改代码

new AlertDialog(Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener)


new DialogInterface.OnCancelListener(){
                    @Override
                    public void onCancel(DialogInterface dialog) {

                        finish();

                    }
                }
或用于
AlertDialog.Builder

setOnKeyListener(DialogInterface.OnKeyListener onKeyListener)
请尝试以下代码:

@Override

public void onBackPressed() {


AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

alertDialogBuilder.setTitle("Warning!");
alertDialogBuilder.setMessage("Do you want to Exit?");
alertDialogBuilder.setCancelable(false);

alertDialogBuilder.setPositiveButton("Ok",new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog,int id) {


        MainActivity.this.finish();
    }


  })

    .setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int id) {

        dialog.cancel();
    }
});

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();


}
请尝试以下代码:

@Override

public void onBackPressed() {


AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

alertDialogBuilder.setTitle("Warning!");
alertDialogBuilder.setMessage("Do you want to Exit?");
alertDialogBuilder.setCancelable(false);

alertDialogBuilder.setPositiveButton("Ok",new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog,int id) {


        MainActivity.this.finish();
    }


  })

    .setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int id) {

        dialog.cancel();
    }
});

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();


}

我认为只要调用finish()就足够了,如果当前活动的父活动是您要显示的活动..对不起,我不明白。我是android新手。你能帮我一些代码吗?!?下面是我想说的一个很好的例子(Dheresh Singh的例子):)我认为只要调用finish()就足够了,如果当前活动的父活动就是您想要显示的活动。对不起,我不明白。我是android新手。你能帮我一些代码吗?!?下面是我想说的一个很好的例子(德雷什·辛格):)为什么我不能在使用
Builder
时使用
setOnCancelListener
?为什么我不能在使用
Builder
时使用
setOnCancelListener