【发布时间】:2015-06-06 11:23:31
【问题描述】:
我有 2 个活动 - MainActivity 和 page1。我从一开始就有这样的意图:
button_forward.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Intent intent = new Intent(MainActivity.this, Page1.class);
startActivity(intent);
return true ;
}
但是,我的 Page1 类的 onCreate 被调用了两次!我可以用 toast 消息检测到它:它在屏幕上出现两次:
@Override
protected void onCreate(Bundle savedInstanceState) {
Toast.makeText(Page1.this, "onCreate 1", Toast.LENGTH_SHORT).show();
super.onCreate(savedInstanceState);
setContentView(R.layout.page1);
//some code here like findview by id...
}
});`
我确实有一些方法在我的 Page1 活动中使用倒计时计时器,等待 2 秒的计时器,我将它们注释掉,但 onCreate() 仍然被调用两次。
我添加了防止屏幕旋转的代码,但错误仍然存在
【问题讨论】:
-
我认为问题是 Toasting a message berore onCreate ... 所以当第二个活动开始执行时,它会 Toast 消息.. 但之后你调用 super.onCreate() .. 所以可能是 onCreate 会调用两次的可能原因..\
-
@Moinkhan,但是 super.onCreate 必须在每个方法中调用,对吧?这是始终调用超类方法的规则 - super.onDestroy() 等
-
是的,对..但是在第一个语句上写 super() 是个好习惯...使用 super 作为第一个语句允许 onCreate() 执行它的默认行为..然后敬酒..
标签: android countdowntimer oncreate screen-rotation