0

「Player」という名前のクラスを作成しました。

public class Player{
    public String name;
    public int score;
}

ボタンをクリックするたびに、新しい TextView と新しい Player クラスが生成されます。これはコードです:

private TextView createNewTextView (String text){
    final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    final TextView newTextView = new TextView(this);

    newTextView.setLayoutParams(lparams);
    newTextView.setText(text);

    Player newPlayer = new Player();
    newPlayer.name = text;
    newPlayer.score = 0;
    players.add(newPlayer);
    zacniIgro.putExtra("players", (ArrayList<Player>) players);
    return newTextView;
}

これは正しい方法ですか?ボタンがクリックされるたびに、「newPlayer」というラベルの下に新しいプレーヤーが追加されるため、小さな欠陥があると思います。これを修正するにはどうすればよいですか?

そして、私の主な問題はこれです。ArrayList の各要素を操作できるように、2 番目のアクティビティで ArrayList を「アンパック」するにはどうすればよいですか? getStringArrayListExtra() を試しましたが、うまくいきません。getExtras() も試しましたが、バンドルを取得するため、これも機能しません。それともそれが正しい方法ですか?しかし、バンドルをどうすればよいでしょうか。

4

2 に答える 2

0

The better way to do this is with Parcelable.

Simple example:

public class Device implements Parcelable {

private String name;
private String hash;

/**
 * Default private constructor.
 */
public Device() {

}

public Device(final Parcel parcel) {
    super();

    readFromParcel(parcel);
}

public static final Parcelable.Creator<Device> CREATOR = new Parcelable.Creator<Device>() {

    @Override
    public Device createFromParcel(final Parcel source) {
        return new Device(source);
    }

    @Override
    public Device[] newArray(final int size) {
        return new Device[size];
    }
};

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

@Override
public void writeToParcel(final Parcel parcel, final int flags) {
    parcel.writeString(name);
    parcel.writeString(hash);
}

private void readFromParcel(final Parcel parcel) {
    this.name = parcel.readString();
    this.hash = parcel.readString();
}

Put your object in intent like this:

intent.putParcelableArrayListExtra("Key", YourObject);

To Get in another screen:

Intent intent = getIntent();
intent.getParcelableArrayExtra("key");
于 2013-08-29T22:09:24.280 に答える