我的MainActivity中有一个“开始”按钮。如果我单击此按钮,我将转到下一个活动(InfoActivity)。现在,如果我点击按钮,我想从BackStack中删除MainActivity。我试过这个:
View.OnClickListener startButtonListener = new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, InfoActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
}
};
但是这不会从BackStack中删除MainActivity,它会从BackStack中删除InfoActivity。
我知道我可以将标志插入AndroidManifest。但这对我来说是不可能的,因为如果我从MainActivity转到PreferencesActivity并使用AndroidManifest中的标志,那么如果我从PreferencesActivity返回到MainActivity,则会删除MainActivity。
所以我想从BackStack中删除MainActivity,如果我点击按钮Start。
答案 0 :(得分:8)
添加完成(); 像这样:
View.OnClickListener startButtonListener = new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, InfoActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
this.finish();
}
};
答案 1 :(得分:3)
如上所述,您应该在您不希望在MainActivity上跟踪的活动中使用Intent.FLAG_ACTIVITY_NO_HISTORY
。
其他方法是在您的信息活动中Intent.FLAG_ACTIVITY_CLEAR_TOP
这将清除整个历史记录(即使是在MainActivity之前的事情)