의도에 따라 오브젝트를 추가하려고합니다. 그 대상의 클래스는 나에 의해 만들어 졌으므로 Parcelable로 만들었습니다.의도에 여분을 넣을 수 없습니다.
private List<NavigationDataSet> ds;
그리고 의도 제작 :
public static Intent mapIntent(Context context){
Intent i = new Intent(context, mapsView.class);
i.putExtra("NavSet", ds);
return i;
}
변수 DS가에서 실행되는 AsyncTask를에서 초기화 활동에
public class NavigationDataSet implements Parcelable {
private ArrayList<Placemark> placemarks = new ArrayList<Placemark>();
private Placemark currentPlacemark;
private Placemark routePlacemark;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
// TODO Auto-generated method stub
out.writeList(placemarks);
out.writeValue(currentPlacemark);
out.writeValue(routePlacemark);
}
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
public static final Parcelable.Creator<NavigationDataSet> CREATOR = new Parcelable.Creator<NavigationDataSet>() {
public NavigationDataSet createFromParcel(Parcel in) {
return new NavigationDataSet(in);
}
public NavigationDataSet[] newArray(int size) {
return new NavigationDataSet[size];
}
};
// example constructor that takes a Parcel and gives you an object populated with it's values
private NavigationDataSet(Parcel in) {
in.readTypedList(placemarks, Placemark.CREATOR);
this.currentPlacemark = in.readParcelable((ClassLoader) Placemark.CREATOR);
this.routePlacemark = in.readParcelable(Placemark.class.getClassLoader());
}
}
는,이 같은 변수를 선언 onCreate 메소드. 는 그리고 나는 putExtra 명령에 미리 컴파일 오류가 발생했습니다 :
그것은 정적이어야 말을하지 않는 비 정적 필드 DS
그러나 여기 http://developer.android.com/reference/android/content/Intent.html에 대한 정적 참조를 만들 수 없습니다 변하기 쉬운.
그리고 정적으로 변경되면, 그것은 말한다 :
적용되지 입니다유형의 의도에있어서, putExtra (문자열, 부울) 인수 (문자열, 목록)
하지만 부울을 전달하지 않습니다. Parcelable입니다. 그래서 내가 뭘하니? 나는 이것이 실제로 작동하는 방식을 이해하지 못한다.
그게 효과가! 이전에 그렇게 해봤다고 생각했지만, 그렇지 않은 것 같습니다. 감사! – ferguior