gpt4 book ai didi

java - 如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 清除 Activity Stack?

转载 作者:IT老高 更新时间:2023-10-28 11:48:52 25 4
gpt4 key购买 nike

我已经阅读了几篇关于使用它的帖子,但一定遗漏了一些东西,因为它对我不起作用。我的 Activity A 在 list 中有 launchmode="singleTop"。它以 launchmode="singleInstance"启动 Activity B。 Activity B 打开一个浏览器并收到一个返回的 Intent ,这就是它是 singleInstance 的原因。我正在尝试覆盖返回按钮,以便将用户发送回 Activity A,然后可以按返回离开 Activity ,而不是再次返回 Activity B。

// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}

从浏览器返回后,栈...A,B,浏览器,B

我希望这段代码将堆栈更改为...一个...因此再次按下返回会将用户带回主屏幕。

相反,它似乎将堆栈更改为...A,B,浏览器,B,A...就好像那些标志不存在一样。

我尝试在 startActivity 之后在 Activity B 中调用 finish(),但随后返回按钮将我再次带回浏览器!

我错过了什么?

最佳答案

我已经开始了 Activity A->B->C->D。当在 Activity D 上按下后退按钮时,我想转到 Activity A。因为 A 是我的起点,因此已经在堆栈上,所以 A 顶部的所有 Activity 都被清除,你不能从 A 返回任何其他 Activity .

这实际上适用于我的代码:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent a = new Intent(this,A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
return true;
}
return super.onKeyDown(keyCode, event);
}

关于java - 如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 清除 Activity Stack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com