当前位置: 首页 > 知识库问答 >
问题:

获取柯特林代码的运行时异常

李疏珂
2023-03-14

我正在使用蓝牙LE来获取周围的设备,但是我没有得到一个列表,而且我还得到一个运行时异常,这里是stack-trace


06-18 13:59:33.188 10189-10189/com.labs.aress.bleomronkotlin E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.labs.aress.bleomronkotlin, PID: 10189
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.labs.aress.bleomronkotlin/com.labs.aress.bleomronkotlin.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4094)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4137)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1529)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6123)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
 Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
    at com.labs.aress.bleomronkotlin.BaseMainActivity.onActivityResult(BaseMainActivity.kt)
    at android.app.Activity.dispatchActivityResult(Activity.java:6931)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4090)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4137) 
    at android.app.ActivityThread.-wrap20(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1529) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

代码在这里

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        AppLog.dMethodIn()
        super.onActivityResult(requestCode, resultCode, data)
        if (REQUEST_CODE_SCAN != requestCode) {
            AppLog.w("Unknown request code : $requestCode")
            return
        }
        if (BleScanActivity.RESPONSE_CODE_CONNECT != resultCode) {
            return
        }

        val discoverPeripheral = data.getParcelableExtra<DiscoverPeripheral?>(BleScanActivity.EXTRA_CONNECT_REQUEST_PERIPHERAL)
        if (null == discoverPeripheral) {
            AppLog.e("null == discoverPeripheral")
            return
        }

        initDeviceInfoView()
        initConnectionView()

        onConnect(discoverPeripheral)
    }

我不明白为什么data抛出null

共有1个答案

司寇凯
2023-03-14

你的代码的问题是data参数不可为空,但是Android用空值调用它。

如果你覆盖Android Studio中的onActivityResult函数,你得到的函数签名实际上是

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

而不是你所拥有的

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)

不同之处在于 ?在“数据:意图”之后添加 ?并对代码进行适当的更改(以解释可为 null 的值),它应该可以正常工作。

 类似资料:
  • 我正在尝试使用静态编程语言反射从类及其成员生成JFrames。我创建了几个注释,其中一些在运行时存在,一些不存在。 组件注释: 启用注释: 我是这样使用这两个注释的: 如果我运行下面的代码: 我得到的唯一输出是这样的:< code>btn: [Component] 由于Retention设置为

  • 我有一个代码如下: 当我尝试运行代码时,我得到这样的消息: 我提到了这个链接,但不明白如何修改上面的代码,使其可行:例外:需要mockito,但没有调用,实际上与这个mock没有任何交互 有人能帮忙吗。 通过添加c.getResult(新的A(新的B()),新的F())解决了上述错误;在上面 我错过了什么?我一直在使用的课程:

  • 我如何将下面的代码从Java转换成Kotlin?

  • 本节将介绍如何获取本书的代码和安装运行代码所依赖的软件。虽然跳过本节不会影响后面的阅读,但我们还是强烈建议读者按照下面的步骤来动手操作一遍。本书大部分章节的练习都涉及改动代码并观察运行结果。因此,本节是完成这些练习的基础。 获取代码并安装运行环境 本书的内容和代码均可在网上免费获取。我们推荐使用conda来安装运行代码所依赖的软件。conda是一个流行的Python包管理软件。Windows和Li

  • 我正在使用以下联系人获取应用程序的代码,我正在获得Android运行时:致命的异常:第17行的主要错误。 下面是我的logcat E/AndroidRuntime:致命异常:主进程:com.example.alpesh_pc.contactList,PID:3833 java.lang.RuntimeException:无法启动activity组件信息{com.example.alpesh_pc.

  • 我对科特林聪明的演员感到困惑。在我看来,等价于