我正在开发一个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来自文档:
如果已设置,并且正在启动的活动已经在
当前任务,而不是启动该任务的新实例
活动,除此以外的所有其他活动将被关闭,
该意图将作为
新的意图。