我有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()仍然被调用了两次。
我添加了代码以防止屏幕旋转,但错误仍然存在
答案 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
则意味着用户抬起了他/她的手指。