为了账号安全,请及时绑定邮箱和手机立即绑定

setOnTouchListen事件会报警告,请问怎么处理掉这个警告??

谁知道这个怎么处理啊,按alter+enter出来的提示是加一个suppert标签,但是加了还是会报这个警告,在哪里去重写那个performClick方法呀,百度出来的回答都是“在合适的地方加”。。

https://img1.sycdn.imooc.com//5b529baf000198f615300503.jpg

正在回答

2 回答

// 上面源码被慕娘吃掉了一些。。。重新贴上来
final ListenerInfo li = mListenerInfo;
if (li != null && li.mOnClickListener != null) {
    playSoundEffect(SoundEffectConstants.CLICK);
    li.mOnClickListener.onClick(this);
    result = true; // li.mOnClickListener != null
} else {
    result = false; // li.mOnClickListener == null
}
1 回复 有任何疑惑可以回复我~

我当初也是百度没有度到,后来去看了 performClick() 的源码,看到上面的注释写着:

Call this view's OnClickListener, if it is defined. 

其实这个 performClick() 方法就是去让 OnClickListener 生效(如果你设置了的话)。


另外,它的返回值和 OnClickListener 有关:

// 截取自源码。。。
final ListenerInfo li = mListenerInfo;
if (li != null && ) {
    playSoundEffect(SoundEffectConstants.CLICK);
    li.mOnClickListener.onClick(this);
    
} else {
    
}

出现这个警告是因为同时设置了 OnClickListener 和 OnTouchListener,有可能导致 OnClickListener 失效。

所以只要在 OnTouchListener 的 onTouch() 方法中有调用 performClick() 去让 OnClickListener 生效即可。


因为它注释上说如果 OnClickListener 生效 就返回 true,正好合意。。。

@return , false
      otherwise is returned.

所以我就直接在 OnTouchListener 的 onTouch() 方法中返回这个方法的返回值:

return v.performClick(); // 这个 v 就是指 onTouch(View v) 中的 v




1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第3季)
  • 参与学习       74891    人
  • 解答问题       444    个

手势识别、数据存储和4大组件,让你牢牢掌握之前的基础知识点

进入课程

setOnTouchListen事件会报警告,请问怎么处理掉这个警告??

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号