2017-11-13 11 views
0

私はこの質問の例に従って設定クラスCurrentGameを、している:しかし、私は小包コンストラクタにintArray scoresRndを追加する方法がわからないAndroid Class Parcelable with ArrayListAndroid:ParcelableでIntArraysを使用するにはどうすればよいですか?私のアプリで

私はこのライン、例えば、それは赤い下線ます追加します。

this.scoresRnd = parcel.readArray(null); 

を...と私は、このエラーメッセージ」互換性のないタイプを取得必須:INT []が見つかりました:。java.langで.Object [] "。手伝ってくれませんか?ありがとう! (また、私のコード内の他のミスを指摘してください)

public class CurrentGame implements Parcelable{ 
    private int rnd; 
    private int[] scoresRnd; 
    private ArrayList<int[]> scoreList; 

    public CurrentGame(){ 
     super(); 
     this.rnd = 0; 
     this.scoresRnd = new int[]{0,0,0,0}; 
     this.scoreList = new ArrayList<>(); 
    } 

    public CurrentGame (Parcel parcel){ 
     this.scoreList = parcel.readArrayList(null); 
     this.rnd = parcel.readInt(); 
     //WHAT DO I PUT HERE FOR THE INTARRAY??? 

    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     // TODO Auto-generated method stub 
     parcel.writeList(this.scoreList); 
     parcel.writeInt(this.rnd); 
    } 

    public static final Creator<CurrentGame> CREATOR = new Creator<CurrentGame>() { 

     @Override 
     public CurrentGame createFromParcel(Parcel parcel) { 
      // TODO Auto-generated method stub 
      return new CurrentGame(parcel); 
     } 

     @Override 
     public CurrentGame[] newArray(int i) { 
      // TODO Auto-generated method stub 
      return new CurrentGame[i]; 
     } 
    }; 

    public void expandList(int[] scoresRnd){ 
     scoreList.add(scoresRnd); 
    } 

    public void setRound(int rnd){ 
     this.rnd=rnd; 
    } 

    public int getRound(){ 
     return rnd; 
    } 

    public ArrayList<int[]> getScoreList(){ 
     return scoreList; 
    } 
} 

答えて

0

この

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

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeInt(this.rnd); 
    dest.writeIntArray(this.scoresRnd); 
    dest.writeList(this.scoreList); 
} 

public s() { 
} 

protected s(Parcel in) { 
    this.rnd = in.readInt(); 
    this.scoresRnd = in.createIntArray(); 
    this.scoreList = new ArrayList<int[]>(); 
    in.readList(this.scoreList, int[].class.getClassLoader()); 
} 

public static final Parcelable.Creator<s> CREATOR = new Parcelable.Creator<s>() { 
    @Override 
    public s createFromParcel(Parcel source) { 
     return new s(source); 
    } 

    @Override 
    public s[] newArray(int size) { 
     return new s[size]; 
    } 
}; 
+0

感謝を試してみてください、私はそれを試してみましょう!しかし、既存のコードをあまり変更しない方法もありますか?それとも私のコードが間違ったアプローチですか? – Kubi

+0

'dest.writeIntArray(this.scoresRnd);'はあなたが必要としていたものです。それを自動生成するために必要な場合は、Android Studioのプラグインがたくさんあります。だから、あなたは 'Parcelable'を気にする必要はありません。 – Sunny

+0

Okだから、私は 'dest.writeIntArray(this.scoresRnd);' 'writeToParcel'メソッドに追加します。しかし私はParcelコンストラクタに何を追加しますか? – Kubi

関連する問題