我想在Intent中返回我的地址模型作为结果。如果我尝试在onAcivityResult方法中获得我的地址模型,一切都很好,但是在onActivityReenter中我得到了这个Exception
Class not found when unmarshalling: ua.com.uklontaxi.models.UIAddress
java.lang.ClassNotFoundException: ua.com.myapp.models.UIAddress
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:324)
at android.os.Parcel.readParcelableCreator(Parcel.java:2383)
at android.os.Parcel.readParcelable(Parcel.java:2337)
at android.os.Parcel.readValue(Parcel.java:2243)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.Bundle.getParcelable(Bundle.java:786)在其他地方没有这样的错误(例如,同一Activity中的onActivityResult )
如何修复它?
附言:我把我的模型放到Bundle上,然后把这个包放到Intent上。我尝试在没有Bundle-wrapping的情况下将地址放到Intent。这对我没什么帮助。
发布于 2018-06-04 20:29:21
这对我有帮助:
override fun onActivityReenter(resultCode: Int, data: Intent?) {
super.onActivityReenter(resultCode, data)
data?.setExtrasClassLoader(this.classLoader) // this is context!
}发布于 2019-10-03 14:43:00
对于任何人仍然想知道为什么这个问题仍然存在,只有 API versions 低于API Oreo (8),它与为 8+提供的修复程序有关。你可以找到官方修复的here,或者你可以检查以下代码(取自官方repo):
Intent intent = mEnterActivityOptions.getResultData();
if (intent != null) {
intent.setExtrasClassLoader(activity.getClassLoader());
}
activity.onActivityReenter(result, intent);本质上,它在调用Activity的onActivityReenter(...);之前,手动将ClassLoader添加到Intent
https://stackoverflow.com/questions/50680228
复制相似问题