class B implements Parcelable{ //lets assume you have A as a data member A obj; public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(obj , flags); } }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(length); for (int i = 0; i < length; i++) { dest.writeParcelable(formats[i], 0); } }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(entries.length); for (Entry entry : entries) { dest.writeParcelable(entry, 0); } }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(length); for (int i = 0; i < length; i++) { dest.writeParcelable(trackGroups[i], 0); } }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(repository, flags); dest.writeTypedList(labels); dest.writeParcelable(milestone, flags); dest.writeParcelable(assignee, flags); dest.writeByte((byte) (open ? 1 : 0)); dest.writeString(direction); dest.writeString(sortType); } }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(chapterId); dest.writeInt(startTimeMs); dest.writeInt(endTimeMs); dest.writeLong(startOffset); dest.writeLong(endOffset); dest.writeInt(subFrames.length); for (Id3Frame subFrame : subFrames) { dest.writeParcelable(subFrame, 0); } }
@Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeInt(facing); out.writeParcelable(ratio, 0); out.writeByte((byte) (autoFocus ? 1 : 0)); out.writeInt(flash); }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(id); dest.writeString(mimeType); dest.writeParcelable(uri, 0); dest.writeLong(size); dest.writeLong(duration); }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(elementId); dest.writeByte((byte) (isRoot ? 1 : 0)); dest.writeByte((byte) (isOrdered ? 1 : 0)); dest.writeStringArray(children); dest.writeInt(subFrames.length); for (Id3Frame subFrame : subFrames) { dest.writeParcelable(subFrame, 0); } }
@Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeParcelable(this.settings, flags); out.writeFloat(this.yOffset); } }
@Override public void itemToParcel(Object input, Parcel parcel) { parcel.writeParcelable(Parcels.wrap(input), 0); } };
@Override public void itemToParcel(Object input, Parcel parcel) { parcel.writeParcelable(Parcels.wrap(input), 0); } };
@Override public void itemToParcel(Object input, Parcel parcel) { parcel.writeParcelable(Parcels.wrap(input), 0); } };
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeFloat(this.x); dest.writeFloat(this.getY()); if (getData() != null) { if (getData() instanceof Parcelable) { dest.writeInt(1); dest.writeParcelable((Parcelable) this.getData(), flags); } else { throw new ParcelFormatException("Cannot parcel an Entry with non-parcelable data"); } } else { dest.writeInt(0); } }
@Implementation protected void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(getPhoneAccountHandle(), flags); dest.writeString(getPrefix()); dest.writeBundle(getFields()); dest.writeString(getMessageBody()); } }
@Test public void testParcelableWithBase() throws Exception { TestParcelableImpl normal = new TestParcelableImpl(23); parcel.writeParcelable(normal, 0); parcel.setDataPosition(0); TestParcelableImpl rehydrated = parcel.readParcelable(TestParcelableImpl.class.getClassLoader()); assertEquals(normal.contents, rehydrated.contents); }
@Test public void testParcelableWithPublicClass() throws Exception { TestParcelable normal = new TestParcelable(23); parcel.writeParcelable(normal, 0); parcel.setDataPosition(0); TestParcelable rehydrated = parcel.readParcelable(TestParcelable.class.getClassLoader()); assertEquals(normal.contents, rehydrated.contents); }
@Test public void testParcelableWithPackageProtected() throws Exception { TestParcelablePackage normal = new TestParcelablePackage(23); parcel.writeParcelable(normal, 0); parcel.setDataPosition(0); TestParcelablePackage rehydrated = parcel.readParcelable(TestParcelablePackage.class.getClassLoader()); assertEquals(normal.contents, rehydrated.contents); }
@Test @Config(minSdk = Build.VERSION_CODES.O_MR1) public void writeToParcel_shouldNotCrash() throws Exception { try (SharedMemory sharedMemory = SharedMemory.create("foo", 4)) { ByteBuffer fooBuf = sharedMemory.mapReadWrite(); fooBuf.putInt(1234); Parcel parcel = Parcel.obtain(); parcel.writeParcelable(sharedMemory, 0); } } }
@Test public void testReadWriteParcelable() { Account a1 = new Account("name", "type"); parcel.writeParcelable(a1, 0); parcel.setDataPosition(0); Account a2 = parcel.readParcelable(Account.class.getClassLoader()); assertEquals(a1, a2); }