2012-11-27 50 views
2

我有这样的代码在onCreate方法:onTouch再次在后退按钮按下触发

ImageView iv01 = (ImageView)findViewById(R.id.hexagon01);   
    iv01.setOnTouchListener(new OnTouchListener(){ 
     public boolean onTouch(View view, MotionEvent event) { 
      Intent intent = new Intent(view.getContext(), ChoiceActivity.class); 
      startActivity(intent); 
      return true; 
     } 
    }); 

当我的新的活动正确加载触摸图像。我可以回去按回来按钮。但是当我再次按下后退按钮时,要关闭应用程序,它会再次启动onTouch事件,再次加载活动。我怎样才能避免它?

谢谢。

回答

0

当我触摸图像时,新的活动会正确加载。我可以回去按回来按钮。但是当我再次按下后退按钮时,要关闭应用程序,它会再次启动onTouch事件,再次加载活动。

老实说,后退按钮不会启动活动的新副本。您的OnTouchListener将为每个ACTION_DOWNACTION_MOVEACTION_UP MotionEvent启动活动的新副本。但你只注意到了许多活动,当您试图关闭活动活动......

只需确保只有发动一个 MotionEvent新活动:

public boolean onTouch(View view, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_UP) { 
     Intent intent = new Intent(view.getContext(), ChoiceActivity.class); 
     startActivity(intent); 
     return true; 
    } 
    return false; 
} 

或者你可以使用一个OnClickListener在这里。

1

由于多种原因,OnTouchListener被触发(您需要检查MotionEvent参数才能找到确切的原因)。看起来你应该只使用一个OnClickListener并以更简单的方式实现相同的功能。