Android 退出应用程序确认对话框多次出现

Android 退出应用程序确认对话框多次出现,android,android-alertdialog,Android,Android Alertdialog,我有一个两页的应用程序,主要是主页面和第二页面 我正在从主旋律到第二旋律,反之亦然 MainActivity.java包含以下代码: Button btnSecond = (Button) findViewById(R.id.btnSecond); btnSecond .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

我有一个两页的应用程序,主要是主页面和第二页面

我正在从主旋律到第二旋律,反之亦然

MainActivity.java
包含以下代码:

Button btnSecond = (Button) findViewById(R.id.btnSecond);

    btnSecond .setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent j = new Intent(MainActivity.this,Second.class);
            startActivity(j);
        }
    });
Button btnClose = (Button) findViewById(R.id.btnClose);

        btnClose .setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent j = new Intent(Second.this,MainActivity.class);
                startActivity(j);
            }
        });
Second.java
有以下代码:

Button btnSecond = (Button) findViewById(R.id.btnSecond);

    btnSecond .setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent j = new Intent(MainActivity.this,Second.class);
            startActivity(j);
        }
    });
Button btnClose = (Button) findViewById(R.id.btnClose);

        btnClose .setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent j = new Intent(Second.this,MainActivity.class);
                startActivity(j);
            }
        });
我在
MainActivity.java

@Override
    public void onBackPressed() {
        new AlertDialog.Builder(this)
        .setMessage("Are you sure you want to exit?")
        .setCancelable(false)
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                MainActivity.this.finish();
            }
        })
        .setNegativeButton("No", null)
        .show();
    }
问题是,当我从第二页转到主页,然后按下设备上的后退按钮时,我会收到两次警报

就我的理解而言,发生这种情况是因为MainActivity在后台加载了两次:一次是当我单击主页上的第二个按钮并遍历到第二个屏幕时,另一次是当我单击第二个页面上的close按钮并遍历到主页时


我想要的是,应该有一个确认对话框,单击“是”应该关闭主活动,即使它被多次加载。

首先,当您调用第二个活动时,请使用:

btnSecond .setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent j = new Intent(MainActivity.this,Second.class);
        j.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(j);
    }
});
您必须调用
super.onBackPressed()

开始第二项活动时,只需调用
finish()

Intent j = new Intent(MainActivity.this,Second.class);
startActivity(j);
finish();

这将解决您的问题。

您不应该再次调用第一个活动,您可以在第二个活动中调用finish。我想这会解决你的问题

Button btnClose = (Button) findViewById(R.id.btnClose);

        btnClose .setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Second.this.finish();
            }
        });
关于主要活动

  @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this)
        .setMessage("Are you sure you want to exit?")
        .setCancelable(false)
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                MainActivity.this.finish();
                super.onBackPressed();
            }
        })
        .setNegativeButton("No", null)
        .show();
    }

请在第二个活动按钮中更改代码单击侦听器

`按钮btnClose=(按钮)findViewById(R.id.btnClose)

你的问题解决了

finish()
函数终止您的活动


请检查。

btnClose上
只需调用
MainActivity.this.finish()方法,而不是
Intent j=新的Intent(Second.this,MainActivity.class);星触觉(j)为什么要在btnClose上启动另一个活动?感谢Piyus的回复,我无法调用finish(),因为如果用户转到第二页并按下back按钮,他应该被引导到主页。感谢juned的回复,在实际应用程序中,这只是一个虚拟,我正在向主页发送一些数据。当您调用finish()时在按钮关闭时,它将重定向到主页面上的您。感谢juned的回复,我无法调用finish(),因为如果用户转到第二页并按下back按钮,他将被引导到主页面。感谢sagar的回复。我遇到以下错误:类型Objecttry
MainActivity.super.onBackPressed()的方法onBackPressed()未定义