【问题标题】:is view.setOnTouchListener(listener) multicast? how does it work?view.setOnTouchListener(listener) 是多播吗?它是如何工作的?
【发布时间】:2011-11-20 19:31:07
【问题描述】:

我的问题是关于使用相同或不同的侦听器多次调用 setOnTouchListener 的效果。

view.setOnTouchListener(myListener);

我知道这最终会在运动事件的 myListener 类中调用“public boolean onTouch(View v, MotionEvent event)”方法。我不明白的是当我后来这样称呼时会发生什么:

view.setOnTouchListener(myOtherListener);

myListener 是否仍接收运动事件?

另外,如果我打电话给

view.setOnTouchListener(myListener);

再次,它是否在每个触摸事件上调用 myListener.onTouch 两次?最后,您如何取消订阅作为侦听器?

我查看了dev guide,但没有找到任何明确指出此或类似 setListeners 工作原理的内容,但如果有人手边有书签或知道它是如何工作的,将不胜感激。

【问题讨论】:

    标签: android view


    【解决方案1】:

    一般规则是当函数以“set”开头时,它会替换以前的侦听器。如果您想注销监听器,请使用view.setOnTouchListener(null);

     view.setOnTouchListener(myListener); 
     /* myListener is active */
     view.setOnTouchListener(myOtherListener); 
     /* myListener is inactive, myOtherListener is active */
     view.setOnTouchListener(myListener);
     /* myListener is active, myOtherListener is inactive */
    

    如果有附加逻辑,您通常会在函数名称中看到 addregister 前缀。例如,TextView.addTestChangedListener()Context.registerReceiver()

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2018-12-24
      • 1970-01-01
      相关资源
      最近更新 更多