在我的应用中,我将数据对象从一个Activity
传递到另一个Activity
。代码非常简单,在第一个 Intent intent = new Intent(getActivity(), BlablaActivity.class);
intent.putExtra(Values.KEY_ITEM, item);
:
Activity
和接收 Intent intent = getActivity().getIntent();
item = (Item) intent.getSerializableExtra(Values.KEY_ITEM);
:
Advertising
public class Advertising implements Serializable {
private static final long serialVersionUID = -7292860618498106953L;
private Content content;
private Anchor anchor;
private String target;
private String id;
// ...
}
课程也非常简单:
Anchor
似乎导致此问题的public class Anchor implements Serializable {
private static final long serialVersionUID = 7360857799761417956L;
public String value;
public String label;
// ...
}
类:
android.support.v7.internal.view.menu.*
我仅针对三星Galaxy S5(sm-g900f)获得以下例外:
引起:java.lang.IllegalArgumentException:field de.mycompany.model.Advertising.anchor
具有类型de.mycompany.model.resultandexpose.Anchor,got de.mycompany.model.resultandexpose.Anchor
我无法理解这一点,预期的课程是实际的课程。这似乎是三星特有的另一个问题。任何人都经历过这个并且知道修复或知道原因是什么?
编辑:
是的,我正在使用Proguard。 proguard文件如下所示:
-keepattributes ** -keep class!android.support.v7.internal.view.menu。, {*;} -dontpreverify -dontoptimize -dontshrink -dontwarn **
第二行是known bug on Samsung devices的变通方法,不应触及除Parcelable
包中的类以外的任何类。
Anchor类的serialVersionUID在我的所有类中都是唯一的。
切换到Serializable
意味着对整个项目进行大规模改革。将对象作为Anchor
传递可以在所有设备上运行。
domain.com/users=1237,3728,5686
类只是这个错误的一个例子,它发生在基本上看起来相同或非常相似的其他几个类上。所以它不是 一个类,但似乎是一个更普遍的问题。
答案 0 :(得分:1)
你应该看看Parcelable是否有意图在两个活动之间传递对象。
您可以查看解释其工作原理的default configuration,我建议您查看Android文档。
答案 1 :(得分:1)
我遇到了类似问题,我发现在galaxy s5设备上使用lolipop更新时,三星使用了错误的multidex实现。您可以在此处查看我的question来解释问题。有人回答了我的问题,但我没有检查它是否有效。也许这会对你有所帮助。