我正在使用org.jetbrains.kotlin.android.extensions
来包裹数据。
这是我的数据类
@Parcelize
data class MusicTrack(
val id: Long,
val title: String,
val albumId: String,
val artist: String,
val duration: String,
val trackArt: String = "",
val fileUri: Uri) : Parcelable
这是我通过
发送数据的方式 override fun playTrack(position: Int, musicList: ArrayList<MusicTrack>) {
info { musicList }
val bundle = bundleOf(
Config.MusicConfig.MUSIC_TRACKS to musicList,
Config.MusicConfig.MUSIC_TRACK_POSITION to position)
MediaControllerCompat.getMediaController(this).transportControls.playFromUri(Uri.parse("Hack"), bundle)
}
然后消费包裹
override fun onPlayFromUri(uri: Uri?, extras: Bundle?) {
super.onPlayFromUri(uri, extras)
val tracks = extras?.getParcelable<MusicTrack>(Config.MusicConfig.MUSIC_TRACKS) as ArrayList<*>
info { tracks }
}
引发上述错误android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
但是,当我尝试在
的活动中使用它时 val songsList = intent.getStringArrayListExtra("Extras")
info { songsList }
有效!谁能在这帮助我?
答案 0 :(得分:0)
您尝试阅读单个MusicTrack
,但在Bundle
中有一个列表。{p>
您需要致电getParcelableArrayList<MusicTrack>
。
答案 1 :(得分:-1)
在 Buid.gradle 中尝试此操作,这解决了我的问题
apply plugin: 'org.jetbrains.kotlin.android.extensions'
androidExtensions {
experimental = true
}