2

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

谢谢。

4

2 回答 2

1

OnTouchListener 被触发有几个原因(您需要检查 MotionEvent 参数才能找到确切的原因)。看来您应该只使用 OnClickListener 并以更简单的方式实现相同的目的。

于 2012-11-27T19:27:49.877 回答
0

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

老实说,后退按钮不会启动您的 Activity 的新副本。ACTION_DOWN您的 OnTouchListener 会为每个、ACTION_MOVE和MotionEvent 启动一个新的 Activity 副本ACTION_UP。但是当您尝试关闭活动活动时,您只会注意到众多活动......

只需确保仅在一个MotionEvent 上启动新 Activity:

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

于 2012-11-27T19:39:28.807 回答