2011-10-31 1 views
3

의도에 따라 오브젝트를 추가하려고합니다. 그 대상의 클래스는 나에 의해 만들어 졌으므로 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입니다. 그래서 내가 뭘하니? 나는 이것이 실제로 작동하는 방식을 이해하지 못한다.

답변

3

귀하의 경우 ds는 정적 변수가 아니므로 정적 방법으로 ds를 참조 할 수 없습니다. ds를 정적으로 만들거나 pass는 mapIntent 함수의 인수로 사용하거나 mapIntent 함수를 정적으로 설정하지 않습니다. 나는 (내가 게시물에 말한대로, 그것은 "유형의 의도에있어서, putExtra (문자열, 부울) 인수 적용되지 않습니다 것을 알려줍니다, 그것은 정적 문자열을 경우

+0

, List ) ", 바보 인 경우 putExtra (String, Parcelable)을 사용하려고합니다. – ferguior

+1

List 는 Parcelable과 같지 않습니다. 'NavigationDataSet'하지만,'List'는 아닙니다. – Peterdk

+0

putExtra (String, Parcelable []) 또는 putExtra (String, List)로 사용할 수 없습니까? 어떻게해야합니까? – ferguior