首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从onActivityReenter中的Intent读取可打包内容

无法从onActivityReenter中的Intent读取可打包内容
EN

Stack Overflow用户
提问于 2018-06-04 20:06:29
回答 2查看 109关注 0票数 1

我想在Intent中返回我的地址模型作为结果。如果我尝试在onAcivityResult方法中获得我的地址模型,一切都很好,但是在onActivityReenter中我得到了这个Exception

代码语言:javascript
复制
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。这对我没什么帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 20:29:21

这对我有帮助:

代码语言:javascript
复制
override fun onActivityReenter(resultCode: Int, data: Intent?) {
   super.onActivityReenter(resultCode, data)

   data?.setExtrasClassLoader(this.classLoader) // this is context!
}
票数 2
EN

Stack Overflow用户

发布于 2019-10-03 14:43:00

对于任何人仍然想知道为什么这个问题仍然存在,只有 API versions 低于API Oreo (8),它与为 8+提供的修复程序有关。你可以找到官方修复的here,或者你可以检查以下代码(取自官方repo):

代码语言:javascript
复制
Intent intent = mEnterActivityOptions.getResultData();
   if (intent != null) {
        intent.setExtrasClassLoader(activity.getClassLoader());
    }
activity.onActivityReenter(result, intent);

本质上,它在调用ActivityonActivityReenter(...);之前,手动将ClassLoader添加到Intent

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50680228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档