在我的应用程序中,我将数据对象从一个传递Activity到另一个.代码很简单,第一个Activity:
Intent intent = new Intent(getActivity(), BlablaActivity.class);
intent.putExtra(Values.KEY_ITEM, item);
Run Code Online (Sandbox Code Playgroud)
并在接收Activity:
Intent intent = getActivity().getIntent();
item = (Item) intent.getSerializableExtra(Values.KEY_ITEM);
Run Code Online (Sandbox Code Playgroud)
这Advertising门课也很简单:
public class Advertising implements Serializable {
private static final long serialVersionUID = -7292860618498106953L;
private Content content;
private Anchor anchor;
private String target;
private String id;
// ...
}
Run Code Online (Sandbox Code Playgroud)
而这个Anchor类似乎导致了这个问题:
public class Anchor implements Serializable {
private static final long serialVersionUID = 7360857799761417956L;
public String value;
public String label;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我仅针对三星Galaxy S5(sm-g900f)获得以下例外:
引起:java.lang.IllegalArgumentException:field de.mycompany.model.Advertising.anchor的
类型为de.mycompany.model.resultandexpose.Anchor,得到了de.mycompany.model.resultandexpose.Anchor
我无法理解这一点,期望的课程是实际的课程.这似乎是三星特有的另一个问题.任何人都经历过这个并知道修复或知道原因是什么?
编辑:
是的,我正在使用Proguard.proguard文件如下所示:
-keepattributes**-keep class!android.support.v7.internal.view.menu., {*;} -dontpreverify -dontoptimize -dontshrink -dontwarn**
第二行是针对三星设备上的已知错误的解决方法,除了android.support.v7.internal.view.menu.*包中的那些类之外,不应该触及任何类.
Anchor类的serialVersionUID在我的所有类中都是唯一的.
切换到Parcelable意味着整个项目的大规模改革.传递对象Serializable 应该适用于所有设备.
这个Anchor类只是这个bug的一个例子,它发生在几个基本上看起来相同或非常相似的其他类上.所以,不是说一个类,但似乎是一个更一般的问题.
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |