AlertDialog始终按下Positive Button

时间:2017-06-01 00:29:07

标签: android alertdialog

我在onBackPressed()中有一个AlertDialog,如果我点击肯定按钮,它必须启动一个含有Intent的活动。

@Override
    public void onBackPressed() {
        super.onBackPressed();

        android.app.AlertDialog.Builder logoutDialog = new android.app.AlertDialog.Builder(MainActivity.this);
        logoutDialog.setTitle("Logout");
        logoutDialog.setMessage("¿Are you sure that you want to exit? Your session will end."
        );

        logoutDialog.setPositiveButton("LOGOUT",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent i = new Intent(MainActivity.this, LoginActivity.class);
                        startActivity(i);
                        finish();
                    }
                }
        );
        logoutDialog.setNegativeButton("CANCEL",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                }
        );
        logoutDialog.show();
    }

但是当我按下对话框时出现不到一秒钟,然后它进入预期的活动但没有按下PositiveButton。

2 个答案:

答案 0 :(得分:2)

尝试删除super.onBackPressed();

@Override
public void onBackPressed() {
    //super.onBackPressed();

    android.app.AlertDialog.Builder logoutDialog = new android.app.AlertDialog.Builder(MainActivity.this);
    logoutDialog.setTitle("Logout");
    logoutDialog.setMessage("¿Are you sure that you want to exit? Your session will end."
    );

    logoutDialog.setPositiveButton("LOGOUT",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent i = new Intent(MainActivity.this, LoginActivity.class);
                    startActivity(i);
                    finish();
                }
            }
    );
    logoutDialog.setNegativeButton("CANCEL",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            }
    );
    logoutDialog.show();
}

答案 1 :(得分:0)

只需提交super.onBackPressed()即可完成您的活动。