我有一个Application.Suppose有三个活动A,B,C。
A-> B(子活动) - > C(子活动)
我已经设置了这些类型的代码来切换到下一个活动。
setContentView(R.layout.B);
问题是当我在活动B或C上点击模拟器或手机上的后退按钮时,关闭应用程序窗口回到主页。 我希望如果我按下活动C上的按钮,它将首先移动到活动B然后移动到A,之后如果我再次点击后退按钮然后它进入主屏幕或关闭应用程序窗口。
我的代码中的任何方法或错误或必须编辑?
答案 0 :(得分: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以默认方式处理堆栈。你的方法最终会让你头疼。
答案 1 :(得分:0)
您需要实际开始一个新活动,然后在那里设置布局以使后退按钮起作用。看看Tasks and Back Stack
将视图设置为新布局与启动新活动不同。从您的代码中可以看出,您只是更改布局而不是开始新活动。
答案 2 :(得分:0)
正如方法setContentView
所说,您只是更改了活动A 的内容视图。检查The Activity lifecycle和方法startActivity
以开始新的活动,并阅读Tasks and Back Stack以获取更多信息。
答案 3 :(得分: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.