diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java index 7e355d95cdb336395d4ea254dd3ccc0d1022355a..e845ffa2c43c2c13330f148149640de3020b27c0 100644 --- a/core/java/android/os/Bundle.java +++ b/core/java/android/os/Bundle.java @@ -934,6 +934,12 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { * you must call {@link #setClassLoader(ClassLoader)} with the proper {@link ClassLoader} first. * Otherwise, this method might throw an exception or return {@code null}. * + *
Warning: the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #getParcelable(String)} instead. + * * @param key a String, or {@code null} * @param clazz The type of the object expected * @return a Parcelable value, or {@code null} @@ -990,6 +996,13 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { * you must call {@link #setClassLoader(ClassLoader)} with the proper {@link ClassLoader} first. * Otherwise, this method might throw an exception or return {@code null}. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #getParcelableArray(String)} instead. + * * @param key a String, or {@code null} * @param clazz The type of the items inside the array. This is only verified when unparceling. * @return a Parcelable[] value, or {@code null} @@ -1054,6 +1067,13 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { * you must call {@link #setClassLoader(ClassLoader)} with the proper {@link ClassLoader} first. * Otherwise, this method might throw an exception or return {@code null}. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #getParcelableArrayList(String)} instead. + * * @param key a String, or {@code null} * @param clazz The type of the items inside the array list. This is only verified when * unparceling. @@ -1105,6 +1125,13 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #getSparseParcelableArray(String)} instead. + * * @param key a String, or null * @param clazz The type of the items inside the sparse array. This is only verified when * unparceling. diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 80201d327f642a249b4980951ae570f0af0d891c..9189c6c8b6c72a11dcddab6c15a78efcaa7da0f6 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -3266,6 +3266,13 @@ public final class Parcel { * Same as {@link #readList(List, ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readList(List, ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -3494,6 +3501,13 @@ public final class Parcel { * Same as {@link #readArrayList(ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readArrayList(ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -3528,6 +3542,13 @@ public final class Parcel { * Same as {@link #readArray(ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readArray(ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -3561,6 +3582,13 @@ public final class Parcel { * Same as {@link #readSparseArray(ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readSparseArray(ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -3878,6 +3906,13 @@ public final class Parcel { * Same as {@link #readParcelableList(List, ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: if the list contains items implementing the {@link Parcelable} interface, + * the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readParcelableList(List, ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -4775,6 +4810,12 @@ public final class Parcel { * Same as {@link #readParcelable(ClassLoader)} but accepts {@code clazz} parameter as the type * required for each item. * + *
Warning: the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readParcelable(ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element. @@ -4843,6 +4884,12 @@ public final class Parcel { * Same as {@link #readParcelableCreator(ClassLoader)} but accepts {@code clazz} parameter * as the required type. * + *
Warning: the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readParcelableCreator(ClassLoader) instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there there was an error * trying to read the {@link Parcelable.Creator}. @@ -4979,6 +5026,12 @@ public final class Parcel { * Same as {@link #readParcelableArray(ClassLoader)} but accepts {@code clazz} parameter as * the type required for each item. * + *
Warning: the class that implements {@link Parcelable} has to be the immediately + * enclosing class of the runtime type of its CREATOR field (that is, + * {@link Class#getEnclosingClass()} has to return the parcelable implementing class), + * otherwise this method might throw an exception. If the Parcelable class does not enclose the + * CREATOR, use the deprecated {@link #readParcelableArray(ClassLoader)} instead. + * * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * is not an instance of that class or any of its children classes or there was an error * trying to instantiate an element.