【问题标题】:How to pass MutableList of object via intent in kotlin如何通过 kotlin 中的意图传递对象的 MutableList
【发布时间】:2020-07-29 06:24:11
【问题描述】:

我的数据类为

@Parcelize
data class Workouts(val id:Int ,val name:String,val image:Int,val time:Long):Parcelable

在一项活动中,我初始化了可变列表,并向 MutuableList 添加了一些数据

   val listRandom= mutableListOf<Workouts>()
     listRandom.add(some datas............)

现在我使用 Intent 将 listRandom 传递给下一个活动

 val intent =Intent(this,StartWorkout::class.java)
            intent.putExtra("workoutlist",listRandom as Parcelable)

现在在下一个活动中,我正在尝试接收数据

 val randomWorkout =intent.getParcelableExtra<MutableList<Workouts>>("workoutlist")

所以在从 Intent 接收数据时出现错误,它说 Expected Parcelable but found MutuableList

所以我想做的只是传递对象列表,所以有没有其他方法可以做到这一点?

【问题讨论】:

    标签: android kotlin android-intent


    【解决方案1】:

    只需将您的 mutableListOf&lt;Workouts&gt;() 转换为 ArrayList,如下所示:

    val listRandom= ArrayList<User>()
    val intent = Intent(this, StartWorkout::class.java)
    intent.putExtra("workoutlist",listRandom)
    

    下一个活动:

    val randomWorkout : ArrayList<User> = intent.getParcelableExtra("workoutlist")
    

    它会起作用的。

    【讨论】:

    • 它说 Type inference failed: Not enough information to infer parameter T in fun getParcelableExtra(p0: String!): T!请明确指定。
    【解决方案2】:

    putParcelableArrayListExtraArrayList 一起使用

    val listRandom= ArrayList<Workouts>()
    val intent = Intent(this, StartWorkout::class.java)
    intent.putParcelableArrayListExtra("workoutlist",listRandom)
    

    然后用

    val list=intent?.getParcelableArrayListExtra<Workouts>("workoutlist")
    

    【讨论】:

    • 另一个一开始没有展示如何转换的人
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2015-05-30
    • 2022-06-11
    • 2018-09-11
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多