首页 > 解决方案 > Kotlin 中的音乐 URI 空指针异常

问题描述

问候所有我已经过去了几天但仍然无法解决问题,空指针

设置音乐 URI 时出现异常错误“var musicTrack = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,curSong!!)”

在此处输入图像描述

 fun PlaySong(){
    mp!!.reset()
    var song = songlist?.get(songPosition!!)
    var curSong = song?.Id


    var musicTrack = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,curSong!!)
    try {
        mp!!.setDataSource(applicationContext,musicTrack!!)
    }catch (e: Exception){
        Log.e("Music Service","Error On Setting Data Source",e)
    }
    mp!!.prepareAsync()
}

标签: androidkotlin

解决方案


堆栈跟踪表明问题发生在第 78 行。mp可能是 null 并且您正在尝试调用它的方法,猜测。

使用!!是一个不好的迹象,因为它意味着值可能为空,但您没有处理这种可能性并说“相信我,它永远不会为空”。这通常是行不通的!我从经验得到的这个结论...

如果您知道它永远不会为空,请创建mp一个不可为空的类型,否则您需要在对它进行任何操作之前对其进行空检查。永远不要使用!!(在极少数情况下你确实需要它,你会知道你需要它,这是规则的一个例外)


推荐阅读