gpt4 book ai didi

java - 如何控制 "back button queue"上的 Activity

转载 作者:行者123 更新时间:2023-12-02 00:45:10 25 4
gpt4 key购买 nike

我希望能够控制用户可以按后退按钮进入哪些 Activity ,具体取决于用户当前所在的位置。例如,我有 Activity A、B、C 和 D。

用户(通过我提供的按钮)从 Activity A 导航到 B、C,最后到 D。如果用户在 D 之前的任何时间按下返回键,我想要正常的返回操作(如果他们按下返回键) Activity C,他们将获得 B)。

但是,如果他们一直到达 D,我想完成 Activity B 和 C。现在,当用户单击返回时,我希望他们看到 A。

最佳答案

通过拦截“后退”按钮按键事件并提供您自己的处理代码,可以轻松完成此操作。

因此,在您的 Activity D 中,您将拥有以下代码:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {

// finish activties, change parents, whatever

return true;
}
return super.onKeyDown(keyCode, event);
}

编辑(由于误解):

您可以将对 Bundle 中先前 Activity 的上下文的引用作为额外内容传递到用于启动新 Activity 的 Intent 中。我相信 Context 是可解析的,所以你应该很好。顺便说一句,您需要这些 Activity 的上下文,以便您可以执行类似 ActivityOneCOntext.finish (); 的操作。

[[已编辑,不起作用]]

但是,您应该小心这些引用,因为对 Activity 上下文的每个 Activity 引用都会阻止垃圾收集器释放为该 Activity 分配的资源。如果您的 Activity 完成并且您仍然在另一个 Activity 中的某个位置保留引用,那么您将出现(某种)内存泄漏。

编辑2:

显然上面的代码不起作用。

您可以使用此方法来获取对当前 Activity 父级上下文的引用:

Context parentContext = (Context) this.getParent ();

所以,不用说,你可以有这样的祖 parent 的上下文:

Context gParentContext = (Context) ((this.getParent ()).getParent ());

您可以看到引用hare .

关于java - 如何控制 "back button queue"上的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208459/

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