我正在使用Firebase Crashlytics进行错误报告。我也在使用Kotlin Android扩展程序。
最近,我在堆栈跟踪中看到以下行:
com.example.foo.bar.MainActivity$onResume$1.onClick (MainActivity.kt:41)
android.view.View.performClick (View.java:5201)
android.view.View$PerformClick.run (View.java:21163)
android.os.Handler.handleCallback (Handler.java:746)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5443)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:728)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
这是指onClick侦听器内部的崩溃。
但是,在我的实际应用中,代码大致是这样的(以下代码位于onResume
内:
someButton.setOnClickListener {
//Code that generates exception
}
我使用Kotlin Android扩展而不使用someButton
来引用对象findViewById
。
如您所见,stacktrace不会告诉我发生崩溃的哪个onClick
侦听器/ onClick
侦听器属于哪个按钮。它只告诉我,崩溃是在onClick
内部创建的onResume
侦听器内部发生的。实际上,找出崩溃也是哪个onClick
侦听器的唯一方法是查看行号并将其与我的代码匹配。
有没有办法让我更详细地描述崩溃发生的方法?为什么显示$.onClick
而不是someButton.onClick
?是因为我使用Kotlin Android扩展程序,而不是传统的findViewById
吗?