我要把这个递给你:
private lateinit var memes: MutableList<Memes>
其中有这样一种模式:
class Memes (
@SerializedName("id") var id: Long,
@SerializedName("title") var title: String
)
从活动a到b。
我经常看到一对“解决方案”,但没有一种有效!
这是我最后一次尝试
val extras = Bundle()
val memesArrayList = ArrayList(memes)
val i = Intent(context, GalleryShow::class.java)
i.putExtras(extras)
i.putStringArrayListExtra("list", memesArrayList)
(context as Activity).startActivityForResult(i, 777)
然而,我得到了Type mismatch: inferred type is ArrayList<Memes!> but ArrayList<String!>? was expected
on memesArrayList
。
编辑:
这是我现在的最新尝试:
在活动A中,内部回收项目:
val extras = Bundle()
extras.putString("gal", "animals")
extras.putString("query", "")
val i = Intent(context, GalleryShow::class.java)
i.putExtra("list", memes.toTypedArray())
i.putExtras(extras)
(context as Activity).startActivityForResult(i, 777)
这是内部活动B:
private lateinit var memes: MutableList<Memes>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_gallery_show)
memes = (this?.intent?.extras?.get("list") as? Array<Memes>)?.asList()!!.toMutableList()
}
发布于 2021-06-15 16:33:54
您可以使用简单的intent.putExtra
,而不必担心要使用哪个变种(如put_____Extra
)。
在提取值时,可以使用intent.extras
获取绑定,然后在绑定上使用get()
并将其转换为适当的类型。这比试图找出要使用哪个intent.get____Extra
函数来提取它要容易,因为您无论如何都要转换它。
无论您的数据类是可序列化的还是可解析的,下面的代码都可以工作。您不需要使用数组,因为ArrayLists本身是可序列化的,但是您确实需要从MutableList转换为ArrayList。
// Packing and sending the data:
val i = Intent(context, GalleryShow::class.java)
i.putExtra("list", ArrayList(memes)) // where memes is your MutableList<Meme> property
startActivityForResult(i, 777)
// Unpacking the data in the other activity:
memes = intent.extras?.get("list") as MutableList<Meme>
https://stackoverflow.com/questions/67989536
复制相似问题