onCreate被调用两次

时间:2015-06-06 11:23:31

标签: android countdowntimer oncreate screen-rotation

我有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活动中使用countdowntimer,等待2秒的计时器,我对它们进行了评论,但onCreate()仍然被调用了两次。

我添加了代码以防止屏幕旋转,但错误仍然存​​在

1 个答案:

答案 0 :(得分:3)

问题是你的触控听众没有检查我们有哪种类型的事件,这意味着你的onTouch应该每秒调用100次,但它实际上只被调用两次因为新的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则意味着用户抬起了他/她的手指。