fweigl
fweigl

Reputation: 22038

Exception on serialization on Samsung Galaxy S5

In my app I pass a data object from one Activity to another. The code is quite straightforward, on the first Activity:

    Intent intent = new Intent(getActivity(), BlablaActivity.class);
    intent.putExtra(Values.KEY_ITEM, item);

and on the receiving Activity:

    Intent intent = getActivity().getIntent();
    item = (Item) intent.getSerializableExtra(Values.KEY_ITEM);

The Advertising class is very simple too:

public class Advertising implements Serializable {

    private static final long serialVersionUID = -7292860618498106953L;

    private Content content;
    private Anchor anchor;
    private String target;
    private String id;

// ...

}

And the Anchor class which seems to be causing this problem:

public class Anchor implements Serializable {

    private static final long serialVersionUID = 7360857799761417956L;

    public String value;
    public String label;

// ...

}

I get the following exception only for the Samsung Galaxy S5 (sm-g900f):

Caused by: java.lang.IllegalArgumentException: field de.mycompany.model.Advertising.anchor
has type de.mycompany.model.resultandexpose.Anchor, got de.mycompany.model.resultandexpose.Anchor

and I can not make any sense of this, the expected class is the actual class. This seems to be yet another Samsung-specific problem. Anyone experienced this and knows a fix or has an idea what the cause for this is?

EDIT:

  1. Yes, I am using Proguard. The proguard file looks like this:

    -keepattributes ** -keep class !android.support.v7.internal.view.menu., {*;} -dontpreverify -dontoptimize -dontshrink -dontwarn **

The second line is a workaround for a known bug on Samsung devices and shouldn't touch any classes except those in the android.support.v7.internal.view.menu.* package.

Upvotes: 6

Views: 608

Answers (2)

rwojcik
rwojcik

Reputation: 1040

I had simillar problem to yours, and I found that with lolipop update on galaxy s5 devices samsung uses bugged multidex implementation. You can check my question here explaining the problem. Someone answered to my question but I didn't checked if it works yet. Maybe this will help you.

Upvotes: 1

Mathieu Bertin
Mathieu Bertin

Reputation: 1624

You should look at Parcelable for passing object between two activities with intent.

You can look at this tutorial that explain how it works, I suggest also to get a look at the Android Doc.

Upvotes: 0

Related Questions