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 则表示用户抬起了他/她的手指。