在按下后退按钮时再次触发onTouch

时间:2012-11-27 18:50:26

标签: android android-activity

我在onCreate方法中有这段代码:

    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事件,再次加载活动。我怎么能避免它?

感谢。

2 个答案:

答案 0 :(得分:1)

OnTouchListener因多种原因被触发(您需要检查MotionEvent参数以找到确切原因)。看来你应该只使用OnClickListener并以更简单的方式实现同​​样的目的。

答案 1 :(得分: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