美文网首页
android中View.performClick()触发无反映

android中View.performClick()触发无反映

作者: android_zyq | 来源:发表于2020-05-28 23:03 被阅读0次

    问题

    在开发项目时遇到使用Button的performClick()方法无响应,这里记录下解决方法。callOnClick()同理。

    解决方案

    1. post到主线程再调用(这是看网友解答的):使用view.post(new Runnable());可以解决大多数问题,但是我使用后仍未解决我的问题;
    btn_create_order.post(new Runnable() {
                        @Override
                        public void run() {
                            btn_create_order.performClick();
                        }
                    });
    
    1. post并加延时:使用view.postDelayed(new Runnable());可以解决;
    btn_create_order.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            btn_create_order.callOnClick();
                        }
                    },300);
    

    原因

    其实上面方案已经可以解决了,简单记录下原因。

    1. 点击事件是UI线程完成的,而代码调用performClick()可能没有在UI线程所以会调用失效;
    2. 而加了post仍无效的原因,你可能想都想不到,是因为我以前为了避免按钮点击事件连续点击触发bug,在基类做了处理,连续点击的时间间隔如果比较小就直接忽略,所以点击view1后去主动调用performClick的msg被系统忽略了(自己挖的坑,早晚要填的,哈哈哈~);

    相关文章

      网友评论

          本文标题:android中View.performClick()触发无反映

          本文链接:https://www.haomeiwen.com/subject/fonzahtx.html