onCreate 被调用了两次
onCreate is called twice
我有 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 class 的 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...
}
});`
我确实有一些方法在我的第 1 页 activity 中使用了倒数计时器,定时器等待 2 秒,我将它们注释掉了,但是 onCreate() 仍然被调用了两次。
我添加了防止屏幕旋转的代码,但错误仍然存在
问题是你的触摸侦听器不检查我们有哪种类型的事件,这意味着你的 onTouch
应该每秒调用 100 次,但实际上只调用了两次,因为new Activity UI 覆盖按钮。使用此代码检查我们有哪个事件:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
Intent intent = new Intent(MainActivity.this, Page1.class);
startActivity(intent);
return true;
}
如果操作是ACTION_DOWN
,则表示用户刚刚触摸了按钮。如果是 ACTION_UP
则表示用户抬起了他/她的手指。
我有 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 class 的 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...
}
});`
我确实有一些方法在我的第 1 页 activity 中使用了倒数计时器,定时器等待 2 秒,我将它们注释掉了,但是 onCreate() 仍然被调用了两次。
我添加了防止屏幕旋转的代码,但错误仍然存在
问题是你的触摸侦听器不检查我们有哪种类型的事件,这意味着你的 onTouch
应该每秒调用 100 次,但实际上只调用了两次,因为new Activity UI 覆盖按钮。使用此代码检查我们有哪个事件:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
Intent intent = new Intent(MainActivity.this, Page1.class);
startActivity(intent);
return true;
}
如果操作是ACTION_DOWN
,则表示用户刚刚触摸了按钮。如果是 ACTION_UP
则表示用户抬起了他/她的手指。