2015-01-08 13 views
8

Jak utworzyć obiekt interfejsu?Jak sprawić, by interfejs działał?

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

Ty nie. Interfejs nie zawiera danych do zapełnienia. Jeśli masz pytanie: "Jak mogę utrzymać instancję interfejsu przez dwie lub więcej czynności?" Można sobie z tym poradzić poprzez statyczne odniesienia, chociaż jest to odradzane. –

+0

Wszystkie elementy 'path' muszą zaimplementować' Parcelable' w adition do 'Options'. Jeśli chcesz go wymusić i sprawdzić czas kompilacji, zmień na 'public interface Opcje extends Parcelable'. Opublikuj pewną konkretną implementację 'Opcji' i mogę wysłać odpowiedź z przykładem. –

Odpowiedz

-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

To jest złe. Jeśli spróbujesz zaimplementować interfejs w interfejsie, pojawi się następujący komunikat "Brak klauzuli implementacji dozwolonej dla interfejsu". – Richard

+0

musisz używać rozszerzeń zamiast narzędzi, podczas implementowania interfejsów z innego interfejsu – nsL

Powiązane problemy