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

Removing Activity from BackStack (Flag_Activity_no_history) does not work

我的 MainActivity 中有一个“开始”按钮。如果单击此按钮,我将转到下一个 Activity (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 中的标志,如果我 return 从 PreferencesActivity 回到 MainActivity.

所以我想从 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);
        this.finish(); 
    }
};

如前所述,您应该在您不想在 MainActivity 上跟踪的 activity 上使用 Intent.FLAG_ACTIVITY_NO_HISTORY。 另一种方法是 Intent.FLAG_ACTIVITY_CLEAR_TOP 在您的信息 activity 上,这将清除整个历史记录(甚至是 MainActivity 之前的内容)