0

我有一个应用程序。假设有三个活动 A、B、C。

A->B(子活动)->C(子活动)。

我已经设置了这些类型的代码来切换到下一个活动。

 setContentView(R.layout.B);

问题是当我在活动 B 或 C 上单击模拟器或手机上的后退按钮时,关闭应用程序窗口回到家。我希望如果我在活动 C 上按下返回按钮,它将首先移动到活动 B,然后移动到 A,然后如果我再次单击返回按钮,那么它会进入主屏幕或关闭应用程序窗口。

我的代码中有任何方法或错误或必须编辑吗?

4

4 回答 4

1

您可以覆盖默认的后按并告诉它您重置了内容视图,但您必须自己跟踪堆栈。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //code to reset view
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

这就是说我真的建议你看看允许android以默认方式处理堆栈。你的方法最终会在未来让你头疼。

于 2013-05-19T01:25:25.387 回答
0

当您使用setContentView时,您不会在活动之间切换。

您实际上只是在更改一项且仅一项活动的内容。这解释了为什么当您按下后退按钮时它会关闭应用程序窗口。

活动 A / 内容 A -> 活动 A / 内容 B -> 活动 A / 内容 C

如果你想从一个活动转到另一个活动:你应该使用 Intent 和 startActivity。

例如,您在实现此按钮的 onClick 函数中实现一个按钮:

Intent i = new Intent(this, ActivityTwo.class);
startActivity(i); 

在另一个名为ActivityTwo.java的 Java 文件中,您实现了一个扩展 Activity 的类ActivityTwo,在 onCreate 方法中您设置了一个不同的视图,这可能相当于内容 B

你的申请方案是这样的:

活动 A / 内容 A -> 活动 B / 内容 B -> 活动 C / 内容 C

当您将进行活动 C 并按下后退按钮时,您将进入活动 B。

于 2013-05-19T02:02:23.013 回答
0

您需要实际启动一个新活动,然后在其中设置布局以使后退按钮起作用。看看Tasks和Back Stack

仅将视图设置为新布局与启动新活动不同。从您的代码中,您似乎只是在更改布局而不是开始新的活动。

于 2013-05-19T01:13:31.077 回答
0

正如方法setContentView所说,您只是在更改Activity A的内容视图。检查Activity 生命周期startActivity启动新 Activity 的方法,并阅读任务和返回堆栈以获取更多信息。

于 2013-05-19T01:17:07.333 回答