Как сделать внутренний класс Parcelable

Мне нужно знать, как сделать внутренний класс Parcelable, чтобы объекты его типа могли передаваться через AIDL в удаленную службу. Я не могу найти никакой информации по этому поводу.

Вот пример кода того, что я пытаюсь выполнить, но он не компилируется, потому что CREATOR в классе Bar не может быть статическим (то есть потому, что он находится во внутреннем классе). Я не могу сделать Bar статическим внутренним классом и не могу переместить Bar за пределы класса Foo (другие зависимости в системе). Мне также нужно знать, как я буду ссылаться на класс Bar из файла AIDL. Любая помощь приветствуется.

public class Foo implements Parcelable
{
    private int a;

    public Foo()
    {
    }

    public Foo(Parcel source)
    {
        this.a = source.readInt();
    }

    public int describeContents()
    {
        return 0;
    }

    public void writeToParcel(Parcel dest, int flags)
    {
        dest.writeInt(this.a);
    }

    public static final Parcelable.Creator<Foo> CREATOR
    = new Parcelable.Creator<Foo>()
    {
        ...
    }

    public class Bar implements Parcelable
    {
        private int b;

        public Bar()
        {
        }

        public Bar(Parcel source)
        {
            this.b = source.readInt();
        }

        public int describeContents()
        {
            return 0;
        }

        public void writeToParcel(Parcel dest, int flags)
        {
            dest.writeInt(this.b);
        }

        public static final Parcelable.Creator<Bar> CREATOR
        = new Parcelable.Creator<Bar>()
        {
            ...
        }
    }
}
8
задан MichaelL 27 January 2012 в 00:27
поделиться