Android Studio 点击工具栏Profile触发ClickProfile方法时程序崩溃问题
问题修复方案
以下是该场景下最常见的崩溃原因及对应解决方法:
- 方法名不匹配
XML布局中android:onClick属性填写的方法名必须和Activity中定义的方法名完全一致,大小写完全相同。只要有一个字符大小写有差异,系统就会找不到目标方法,直接抛出异常崩溃。 - 方法签名不符合规范
系统可调用的点击方法必须同时满足三个要求:使用public修饰、返回值为void、仅包含一个View类型的入参。如果方法用了private修饰、有额外参数、或者返回值非void,都无法被系统识别。 - 方法所属类错误
android:onClick属性默认只会在加载当前XML布局的宿主Activity中查找对应方法,如果你将ClickProfile方法定义在了Fragment、自定义View或者其他非当前Activity的类中,系统无法找到对应方法。如果需要在Fragment中响应该点击,建议不要使用android:onClick属性,直接在Fragment代码中调用控件的setOnClickListener设置监听即可。 - 混淆导致方法被清除
如果你开启了ProGuard/R8混淆且没有配置对应保留规则,ClickProfile方法可能会被混淆重命名或者直接移除,导致运行时无法找到。可以给该方法添加@Keep注解,或者在混淆规则文件中添加规则保留该方法。 - 方法内部代码异常
也存在方法已经被正常调用,但方法内部首行代码就触发了空指针、类型转换异常等问题,看起来和点击直接崩溃的表现一致。你可以在方法开头添加一行日志打印,确认是否成功进入方法,再排查方法内部的代码问题。
内容的提问来源于stack exchange,提问作者Francesco Rosso
相关产品推荐
相关产品推荐

