android - 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()
}
解决方案
堆栈跟踪表明问题发生在第 78 行。mp
可能是 null 并且您正在尝试调用它的方法,猜测。
使用!!
是一个不好的迹象,因为它意味着值可能为空,但您没有处理这种可能性并说“相信我,它永远不会为空”。这通常是行不通的!我从经验得到的这个结论...
如果您知道它永远不会为空,请创建mp
一个不可为空的类型,否则您需要在对它进行任何操作之前对其进行空检查。永远不要使用!!
(在极少数情况下你确实需要它,你会知道你需要它,这是规则的一个例外)
推荐阅读
- python - 在 Python Pandas 中按 ROW 计数出现次数
- javascript - 删除测试期间生成的 id
- javascript - 在javascript中的arrylist中存储图像
- python - Python 3 中 zip 相关语句的等效代码
- c# - 如何计算c#中两个日期()之间的差异?
- python - Django Annotated Query 仅计算反向关系中的最新查询
- bash - 如何将 rm 文件作为 awk 操作?
- hash - 这个哈希算法是什么?
- python - 按 (lat,long) 值对数据进行分组以确定绘图的颜色
- java - 有序、长时间运行的异步作业