2015-01-08 14 views
8

Arabirim nesnesini nasıl ayrılabilirim?Arabirim Parceble nasıl yapılır?

public interface Options{ 
    public String getAction(); 
    public String getType(); 

} 


public class OptionsInfo implements Parcelable { 

    private int duration; 
    private ArrayList<Options> path; 

    public OptionsInfo(int duration) { 
     super(); 
     this.duration = duration; 
     this.path = new ArrayList<Options>(); 
    } 

    public ArrayList<Options> getPath() { 
     return path; 
    } 

    public void setPath(ArrayList<Options> path) { 
     this.path = path; 
    } 

    public void addToPath(Options object) 
     { 
      path.add(object); 
     } 

    public int getDuration() { 
     return duration; 
    } 

    public void setDuration(int duration) { 
     this.duration = duration; 
    } 

    @Override 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 

     dest.writeInt(this.duration); 
     dest.writeTypedList(this.path); 

    } 

    private OptionsInfo (Parcel in){ 

     path = new ArrayList<Options>(); 

     this.duration = in.readInt(); 

     in.readTypedList(this.path, Options.CREATOR); 
    } 

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

     public OptionsInfo[] newArray(int size) { 
      return new OptionsInfo[size]; 
     } 
    }; 

} 
+2

Değilsin. Bir arabirim, ayrıştırılacak verileri içermiyor. Sorunuz şu ise: "İki veya daha fazla etkinlik üzerinden arayüz örneğimi nasıl koruyabilirim?" Statik referanslar ile halledebilirsiniz, ancak bu önerilmez. –

+0

Tüm 'yol 'öğeleri' Seçenekler’e eklendiğinde Parcelable’ı uygulamak zorundadır. Bunu zorlamak ve derleme saatini kontrol etmek istiyorsanız, 'public interface Options' Parcelable 'seçeneğine geçin. 'Seçenekler' somut bir uygulama yayınlayın ve bir örnek ile bir cevap yazabilirim. –

cevap

-2
public interface Options implements Parcelable { 
public String getAction(); 
public String getType(); 

Creator<Options> getCreator(); 
} 


public class OptionsInfo implements Options{ 

private int duration; 
private ArrayList<Options> path; 

public OptionsInfo(int duration) { 
    super(); 
    this.duration = duration; 
    this.path = new ArrayList<Options>(); 
} 

public ArrayList<Options> getPath() { 
    return path; 
} 

public void setPath(ArrayList<Options> path) { 
    this.path = path; 
} 

public void addToPath(Options object) 
    { 
     path.add(object); 
    } 

public int getDuration() { 
    return duration; 
} 

public void setDuration(int duration) { 
    this.duration = duration; 
} 

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeInt(this.duration); 
    dest.writeTypedList(this.path); 

} 

private OptionsInfo (Parcel in){ 

    path = new ArrayList<Options>(); 

    this.duration = in.readInt(); 

    in.readTypedList(this.path, Options.CREATOR); 
} 

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

    public Options[] newArray(int size) { 
     return new OptionsInfo[size]; 
    } 
}; 

@Override 
public Creator<Options> getCreator() { 
    return CREATOR; 
} 
} 
+0

Bu yanlış. Bir arabirimde bir arabirimi uygulamaya çalışırsanız, "Arabirim için izin verilmeyen tümceye izin ver" hatası aşağıdaki hata iletisini alırsınız. – Richard

+0

başka bir arabirimden arayüzler uygularken, aletler yerine uzatmalar kullanmalısınız – nsL