【问题标题】:onTouch is triggered again on back button pressedonTouch 在按下后退按钮时再次触发
【发布时间】:2012-11-27 18:50:26
【问题描述】:

我在 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 事件,再次加载活动。如何避免?

谢谢。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      只需确保您只在 一个 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多