Android枚举实现Parcelable接口

枚举类实现Parcelable的写法如下:

public enum MyEnum implements Parcelable {    

       FIRST(1), SECOND(2);    

       private int mValue;    

       MyEnum(int value) {        
             this.mValue = value;   
        }    

        @Override    
        public void writeToParcel(Parcel dest, int flags) {     
              dest.writeInt(mValue);    
        }   
 
        @Override    
        public int describeContents() {        
              return 0;    
        }   
 
        public static final Creator<MyEnum> CREATOR = new Creator<MyEnum>() {        
                @Override        
                 public MyEnum createFromParcel(Parcel in) {     
                     return MyEnum.values()[in.readInt()];       
         }    
    
        @Override        
        public MyEnum[] newArray(int size) {            
               return new MyEnum[size];        
              }    
        };
}

 当枚举类为一个类的成员变量,并且该类也要实现Parcelable接口时,则先让枚举类实现Parcelable接口,

public class MyClass implements Parcelable {   
 
     private String name;    

     private int age;    

    private MyEnum myEnum;  
  
    protected MyClass(Parcel in) {        
        name = in.readString();        
        age = in.readInt();        
        myEnum = in.readParcelable(MyEnum.class.getClassLoader()); 
   }    

    @Override    
    public void writeToParcel(Parcel dest, int flags) {   
        dest.writeString(name);        
        dest.writeInt(age);        
        dest.writeParcelable(myEnum, flags);   
     }    
    @Override   
   public int describeContents() {        
        return 0;    
   }  
  
  public static final Creator<MyClass> CREATOR = new Creator<MyClass>() {        
      @Override        
      public MyClass createFromParcel(Parcel in) {            
          return new MyClass(in);        
      }        
      @Override        
      public MyClass[] newArray(int size) {            
        return new MyClass[size];        
       }    
    };
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Parcelable接口,需要以下几个步骤: 1. 在数据类型所在的包下,创建一个实现Parcelable接口的类,例如: ``` public class MyData implements Parcelable { private int id; private String name; // 构造方法、getter和setter等... // 实现Parcelable接口的方法 @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(name); } public static final Parcelable.Creator<MyData> CREATOR = new Parcelable.Creator<MyData>() { @Override public MyData createFromParcel(Parcel source) { return new MyData(source); } @Override public MyData[] newArray(int size) { return new MyData[size]; } }; private MyData(Parcel in) { id = in.readInt(); name = in.readString(); } } ``` 在这个例子中,我们定义了一个MyData类,它有两个属性:id和name。这个类实现Parcelable接口,并实现了describeContents()和writeToParcel()方法。 2. 在writeToParcel()方法中,我们需要将MyData对象的属性写入到Parcel中。这里我们使用了Parcel的writeInt()和writeString()方法,将id和name写入Parcel中。 3. 在CREATOR实例变量中,我们定义了一个Parcelable.Creator对象,它有两个方法:createFromParcel()和newArray()。createFromParcel()方法用于从Parcel中读取MyData对象,newArray()方法用于创建一个MyData数组。 4. 在MyData的构造方法中,我们从Parcel中读取id和name属性。 完成以上步骤后,MyData类就实现Parcelable接口,可以作为Intent的数据类型使用。在Intent中传递MyData对象时,可以使用putExtra()方法或putParcelableArrayListExtra()方法。在接收Intent的Activity中,可以使用getParcelableExtra()方法或getParcelableArrayListExtra()方法获取MyData对象或MyData对象的ArrayList。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值