簡體   English   中英

Android:使用Parcerable將自定義對象的ArrayList從片段發送到活動

[英]Android: Send ArrayList of custom objects from fragment to activity using Parcerable

我有一個問題,使這個工作:

1)我有實現Parcelable的自定義類:

public class CityCoordinates implements Parcelable {

private double latitude;
private double longitude;

public double getLatitude() {
    return latitude;
}

public void setLatitude(double latitude) {
    this.latitude = latitude;
}

public double getLongitude() {
    return longitude;
}

public void setLongitude(double longitude) {
    this.longitude = longitude;
}

public CityCoordinates(double latitude, double longitude) {
    this.latitude = latitude;
    this.longitude = longitude;
}

public CityCoordinates(Parcel in) {
    latitude = in.readDouble();
    longitude = in.readDouble();
}

public int describeContents() {
    return 0;
}

public void writeToParcel(Parcel dest, int flags) {
    dest.writeDouble(latitude);
    dest.writeDouble(longitude);
}

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

    public CityCoordinates createFromParcel(Parcel in) {
        return new CityCoordinates(in);
    }

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

};

}

2)我有一個ArrayList listItems片段,我想發送給另一個活動:

ArrayList<CityCoordinates> listItems = new ArrayList<>();
...
Intent intent = new Intent(getActivity(), MapActivity.class);
            intent.putParcelableArrayListExtra("key", listItems);
            startActivity(intent);

3)這是我在我開始的活動中檢索ParcelableArrayListExtra的方法:

public class MapActivity extends ActionBarActivity {
...
ArrayList<CityCoordinates> cityCoordinatesList = getIntent().getParcelableArrayListExtra("key");

但是當我嘗試檢索額外的時候,我得到NullPointerException。 我做錯了什么? 謝謝您的幫助!

為了從意圖中撤回額外內容,我應該在活動的創建中完成。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_map_main);
...
    ArrayList<CityCoordinates> cityCoordinatesList = getIntent().getParcelableArrayListExtra("key");
...

我建議定義一個接口,讓主活動實現它。 將該引用傳遞給片段。 當您想要發送數據時,只需將其傳遞給接口並刪除該片段即可。 這將節省一些時間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM