Я пытаюсь использовать Parcel для записи и затем читать Parcelable. По какой-то причине, когда я прочитал объект обратно из файла, он возвращается как null.
public void testFoo() {
    final Foo orig = new Foo("blah blah");
    // Wrote orig to a parcel and then byte array
    final Parcel p1 = Parcel.obtain();
    p1.writeValue(orig);
    final byte[] bytes = p1.marshall();
    // Check to make sure that the byte array seems to contain a Parcelable
    assertEquals(4, bytes[0]); // Parcel.VAL_PARCELABLE
    // Unmarshall a Foo from that byte array
    final Parcel p2 = Parcel.obtain();
    p2.unmarshall(bytes, 0, bytes.length);
    final Foo result = (Foo) p2.readValue(Foo.class.getClassLoader());
    assertNotNull(result); // FAIL
    assertEquals( orig.str, result.str );
}
protected static class Foo implements Parcelable {
    protected static final Parcelable.Creator<Foo> CREATOR = new Parcelable.Creator<Foo>() {
        public Foo createFromParcel(Parcel source) {
            final Foo f = new Foo();
            f.str = (String) source.readValue(Foo.class.getClassLoader());
            return f;
        }
        public Foo[] newArray(int size) {
            throw new UnsupportedOperationException();
        }
    };
    public String str;
    public Foo() {
    }
    public Foo( String s ) {
        str = s;
    }
    public int describeContents() {
        return 0;
    }
    public void writeToParcel(Parcel dest, int ignored) {
        dest.writeValue(str);
    }
}
Что мне не хватает?
UPDATE: Чтобы упростить тест, я удалил чтение и запись файлов в моем исходном примере.