diff options
| -rw-r--r-- | core/java/android/os/Parcel.java | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 9b68f90aa28b..290202194732 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -1370,7 +1370,13 @@ public final class Parcel {              // Must be before Parcelable              writeInt(VAL_BUNDLE);              writeBundle((Bundle) v); +        } else if (v instanceof PersistableBundle) { +            writeInt(VAL_PERSISTABLEBUNDLE); +            writePersistableBundle((PersistableBundle) v);          } else if (v instanceof Parcelable) { +            // IMPOTANT: cases for classes that implement Parcelable must +            // come before the Parcelable case, so that their specific VAL_* +            // types will be written.              writeInt(VAL_PARCELABLE);              writeParcelable((Parcelable) v, 0);          } else if (v instanceof Short) { @@ -1426,9 +1432,6 @@ public final class Parcel {          } else if (v instanceof Byte) {              writeInt(VAL_BYTE);              writeInt((Byte) v); -        } else if (v instanceof PersistableBundle) { -            writeInt(VAL_PERSISTABLEBUNDLE); -            writePersistableBundle((PersistableBundle) v);          } else if (v instanceof Size) {              writeInt(VAL_SIZE);              writeSize((Size) v); |