【发布时间】:2020-04-28 14:03:22
【问题描述】:
我正在尝试从 App1 传递一个包含一些数据的包,该数据类的数据类是 Auxiliar 到 App2,该 App2 也定义了 Auxiliar 数据类,但我收到以下错误:
E/Parcel: Class not found when unmarshalling: com.opp.App1.ui.main.Auxiliar
我认为 App2 在检索捆绑信息时试图找到 Auxiliar 定义,但我不知道如何使用 App2 中定义的 Auxiliar
这是一些代码
@Parcelize
data class Auxiliar(
var nightId: Long = 0L,
val startTimeMilli: Long = System.currentTimeMillis(),
var endTimeMilli: Long = startTimeMilli,
var quality: Int = -1
): Parcelable
应用程序1
var intent: Intent? = activity?.packageManager?.getLaunchIntentForPackage("com.opp.App2")
val argu1 = Auxiliar(-101, 1,1,-1)
if (intent != null) {
var bundle = Bundle()
bundle.putParcelable("una", argu1)
intent.putExtra("myBundle",bundle)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}
在 App2 中检索:
val bundle = activity?.intent?.getBundleExtra("myBundle")
if (bundle != null) {
var una = bundle.getParcelable<Auxiliar>("una")
}
【问题讨论】:
-
“我不知道如何使用 App2 中定义的辅助”——你不能。它们必须是相同的类:相同的定义、相同的完全限定的类名。
-
所以...您不能将 parcelable 类从一个应用程序传递到另一个应用程序?你只能传递原始类?
-
好吧,如果你有相同的完全限定包名称的相同类,那么它会工作
标签: android kotlin android-intent bundle parcelable