我正在开发一个android应用程序。因此,在其中有一个名为“ Aboutus”的按钮。当我单击该按钮时,它将启动另一活动并显示相应的视图。

这是按钮Aboutus click事件的代码。

    aboutus.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
             Intent intent = new Intent(MainActivity.this,AboutUs.class);
             startActivity(intent);
        }

    });

}


然后在Aboutus活动中有后退按钮。当我们按下该后退按钮时,它将再次进入主要活动。
后退键事件是这样的..

    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(AboutUs.this,MainActivity.class);
            intent.putExtra("aboutus", true);
            startActivity(intent);
            finish();
            System.exit(0);
        }

    });


在这里,我出于一些其他目的放置了一些意向附加功能。所以然后再在mainactivity中我有退出按钮。这应该杀死整个应用程序。

我的退出按钮代码如下所示。

exit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
              finish();
              System.exit(0);
        }

    });


除一种情况外,“退出”按钮可以完美运行(结束应用程序)。如果我们单击aboutus并转到该活动,然后在该aboutus活动上按返回按钮,然后再次返回到主要活动,最后当我要退出时,它不会杀死整个应用程序,而是再次转到about活动。

结论,
MainActivity --->单击aboutus按钮(此处没有问题。这将启动aboutus活动)

Aboutus ----->单击“后退”按钮(也可以。返回主活动)

MainActivity->退出按钮(不起作用。它将再次进入关于活动的状态)

那么如何解决这个问题呢?

最佳答案

使用意图标志ACTIVITY_CLEAR_TOP清除其上的所有活动:

            Intent intent = new Intent(AboutUs.this,MainActivity.class);
            intent.putExtra("aboutus", true);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            startActivity(intent);


FLAG_ACTIVITY_CLEAR_TOP来自文档:


  如果已设置,并且正在启动的活动已经在
  当前任务,而不是启动该任务的新实例
  活动,除此以外的所有其他活动将被关闭,
  该意图将作为
  新的意图。

09-10 21:57