Intent에서 객체를 전달하는 두 가지 방법 중 하나인 Parcelable 정보

안드로이드 개발자의 예시를 먼저 보십시오:
4
 public class MyParcelable implements Parcelable {
     private int mData;

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

     public static final Parcelable.Creator<MyParcelable> CREATOR
             = new Parcelable.Creator<MyParcelable>() {
         public MyParcelable createFromParcel(Parcel in) {
             return new MyParcelable(in);
         }

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     };
     
     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
 }
이 몇 가지 방법은 반드시 실현해야 한다. 이 예시에서 단지 하나의 유형, 즉 int만 있다.
복잡한 유형은 어떻게 처리합니까?
boolean 유형인 경우 다음과 같이 작성할 수 있습니다.
writeToParcel 메서드에 다음과 같이 적습니다.
dest.writeString(Boolean.toString(favorited));
privateMy Parcelable(Parcelin) 메서드에 다음과 같이 적습니다.
favorited = Boolean.parseBoolean(in.readString());
Arraylist 유형은 다음과 같습니다. 그리고 PicUrl 클래스도 Parcelable을 상속해야 합니다.
pic_Urls = in.readArrayList(Pic_Url.class.getClassLoader());
dest.writeList(pic_Urls);
Date 유형은 다음과 같습니다.
dest.writeLong(created_at.getTime());
created_at = new Date(in.readLong());
객체 User는 이렇게 할 수 있습니다. 또한 User라는 클래스도 Parcelable를 계승해야 합니다.
user = in.readParcelable(User.class.getClassLoader());
 dest.writeParcelable(user, flags);
List 유형은 다음과 같습니다.
dest.writeStringList(pic_Urls);
pic_Urls=   in.readArrayList(String.class.getClassLoader());

이상의 방법은 개인이 시험해 보면 실행할 수 있다

좋은 웹페이지 즐겨찾기