我有两个名为 Home 和 Cart 的活动。当我按下活动主页中的按钮时,它会转到活动购物车。
为此,我使用了以下代码
public void onClick(View v) {
Intent intent = new Intent(this, Cart.class);
startActivity(intent);
}
在购物车活动中,当我按下按钮时,它会进入活动主页。
For That
public void onClick(View v) {
Intent intent = new Intent(this, Home.class);
startActivity(intent);
}
活动正在变化,但每次活动开始时都会调用onCreate
方法。
这是活动的良好生命周期吗?如果没有,我该如何解决?
答案 0 :(得分:1)
如何解决?这是活动的预期行为。不过,如果您不希望调用onCreate方法中的方法,可以使用这样的标志:
public class YourActivity extends Activity {
private boolean firstStart = true;
public void OnCreate(...) {
if (firstStart) {
//do your stuff here
firstStart = false;
}
}
}
答案 1 :(得分:1)
如果您同时运行两项活动,请考虑使用TabHost。
答案 2 :(得分:1)
要解决您的问题,您必须了解活动生命周期,以及从一个活动切换到另一个活动时调用的活动生命周期方法。
答案 3 :(得分:0)
不,我认为在这种情况下循环不正确。
通过这种设计,您最终可能会有一堆不断增长的活动,例如:Home - >购物车 - >首页 - >购物车 - >首页 - >购物车 - >等...
按“返回”按钮将循环返回此堆栈中的每个项目。
我认为这不是你想要的。如果用户在家,然后进入购物车,他可能会按回“返回主页”。现在堆栈只包含Home,再次按Back将退出,这听起来是正确的。鉴于您展示的片段,我认为当使用按下您在购物车中提到的此按钮时,应该发生完全相同的事情。
因此,您需要在购物车中调用finish(),以便返回主页。您不应该依赖onSaveInstanceState()来恢复购物车的内容。例如,您可以使用SQLite数据库。
只要推出购物车,就会调用onCreate(),但只会在Home中调用一次。
但真实的是你甚至不应该让那个按钮从推车回到家。这可能是人们在iOS上做的事情,但在Android上,我们有“返回”按钮,用户知道,使用它,并且不需要在屏幕上复制此按钮。