Kotlin开发中Button控件setOnClickListener点击无响应无Toast提示问题
按钮点击事件无响应排查方案
- 检查布局文件
R.layout.activity_login内Button控件的id是否和代码中引用的R.id.sign_in_button完全一致,大小写、下划线拼写错误会导致findViewById绑定到错误控件或空对象,直接导致点击无响应。 - 检查布局中是否存在透明悬浮控件、父布局拦截触摸事件的情况,按钮被其他视图遮挡会导致触摸事件被上层消费,可通过Android Studio内置的布局检查器工具,运行应用后查看当前页面视图层级,确认按钮的可点击区域没有被覆盖。
- 检查布局内Button标签是否设置了
android:onClick属性,同时设置xml的onClick属性和代码的setOnClickListener会产生冲突,优先执行xml绑定的方法,若对应方法不存在也不会触发代码中的监听逻辑。 - 检查
addListeners执行完成后,是否存在后续代码重新给signInButton设置点击监听、或者设置isClickable = false、isEnabled = false属性的情况,会覆盖之前设置的监听或直接禁用按钮点击。 - 检查
signIn()方法中调用的googleSignInClient是否已经完成初始化,未完成初始化抛出的未捕获异常会导致后续逻辑终止,Toast也无法弹出,可以在监听的lambda第一行加Log输出或者断点,确认点击时监听逻辑是否被执行。
快速验证方法:在
addListeners方法执行完成后调用signInButton.performClick(),如果控制台有输出、Toast正常弹出,说明监听绑定正常,问题出在触摸事件被拦截;如果还是无响应,说明控件绑定或者监听设置环节存在问题。
内容的提问来源于stack exchange,提问作者Maximilian Wun.
相关产品推荐
相关产品推荐

