从BackStack中删除活动(Flag_Activity_no_history)不起作用

时间:2015-06-11 11:43:43

标签: java android android-activity back-stack

我的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。

2 个答案:

答案 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之前的事情)