2017-08-23 13 views
0

私はInterface Parcelableを勉強しています。どのように動作するかを完全に理解しようとするといくつかの問題に直面しています。Parcelable Interfaceについての説明

私はあなたに私のクラスを示しています:

public class Media implements IModel, Parcelable{ 

    private Uri uri; 
    private long _ID; 
    private boolean isOnDb = false; 
    private boolean isSelected = false; 

    /*Getter and setter methods 
    ........ 
    */  


    /*********************************** Parcelable **********************************/ 
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator<Media>(){ 
     @Override 
     public Media createFromParcel(Parcel parcel) { 
      return new Media(parcel); 
     } 

     @Override 
     public Media[] newArray(int i) { 
      return new Media[i]; 
     } 
    }; 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeParcelable(uri, 1); 
     parcel.writeLong(_ID); 
     parcel.writeByte((byte) (isOnDb ? 1 : 0)); 
     parcel.writeByte((byte) (isSelected ? 1 : 0)); 
    } 

    private Media (Parcel parcel){ 
     uri = parcel.readParcelable(Uri.class.getClassLoader()); 
     _ID = parcel.readLong(); 
     isOnDb = parcel.readByte() != 0; 
     isSelected = parcel.readByte() != 0; 
    } 
} 

質問1 あなたが見ることができるように、私はちょうど2とのコンストラクタを持って、私は私の質問のいくつかに答えを見つけることができませんでした、インターネット上 フィールドMedia(Uri uri, long _ID)。メソッドwriteToParcel()とコンストラクタprivate Media (Parcel parcel)の体内に4つのフィールドがある場合は問題ですか?つまり、private Media (Parcel parcel)writeToParcel()で管理されるフィールドには、「他の」コンストラクタに渡されるフィールドの数が反映されるはずです。

質問2 Uriフィールドはどのように管理する必要がありますか?私はそれを正しい方法ですか? P.S.:なぜ私は書くことができないのですか?parcel.writeSerializable(Uri); Uriクラスimplements Serializableでもコンパイルエラーが発生します。

は事前

答えて

1

をありがとうござい方法writeToParcel()とコンストラクタ民間メディア(小包小包)メナージュ自分の体の内側の4つのフィールドかどうかは問題ですか?

これで問題はありません。

ウリフィールドをどのように管理すればよいですか?私はそれを正しい方法ですか?

あなたが持っているものは大丈夫です。個人的には、クラスローダーを使いこなすことが嫌いなので、文字列との間で変換を行います。

UriクラスがSerializableを実装していても、コンパイルエラーが発生します。

UriSerializableを実装していません。それはParcelableを実装します。 the JavaDocsを参照してください。

+0

ありがとうございます:) – MDP

関連する問題