문제

구현하는 객체 배열을 쓰려고합니다. 말할 수 있습니다 a 소포 사용 WriteParcelableArray.

내가 쓰려는 객체는 다음과 같이 정의됩니다.

public class Arrival implements Parcelable {
    /* All the right stuff in here... this class compiles and acts fine. */
}

그리고 나는 그것들을 다음과 같이 '소포'에 쓰려고 노력하고 있습니다.

@Override
public void writeToParcel(Parcel dest, int flags) {
    Arrival[] a;
    /* some stuff to populate "a" */
    dest.writeParcelableArray(a, 0);
}

Eclipse가 컴파일하려고하면 오류가 발생합니다.

바운드 불일치 : 유형 소포의 일반적인 방법 writeParcelAbleArray (t [], int)는 인수 (도착 [], int)에 적용 할 수 없습니다. 추론 된 유형 도착은 경계 매개 변수를 유효한 대체물이 아닙니다.

이 오류 메시지를 완전히 이해하지 못합니다. Parcelable 인터페이스 (클래스가 아님)이므로 확장 할 수 없습니다. 누구든지 아이디어가 있습니까?

업데이트: 나는 기본적으로 an을 넣을 때 같은 문제가 있습니다 ArrayListParcelables에 s Intent:

Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);

수확량 :

PutparcelableArraylistextra (String, arraylist <? extends parcelable>) 방법은 인수에 적용 할 수 없습니다 (String, arraylist <location>).

이건 때문일 수 있습니다 Location 내가 위에서 일하고 있던 수업이었습니다 (포장 Arrivals)하지만 나는 그렇게 생각하지 않습니다.

도움이 되었습니까?

해결책 2

그것은 단지 내가 소포 배열을 만들기를 원한다는 것이 밝혀졌습니다. 질문에서 예제를 사용하려면 :

@Override
public void writeToParcel(Parcel dest, int flags) {
    Parcelable[] a;
    /* 
        some stuff to populate "a" with Arrival 
        objects (which implements Parcelable) 
    */
    dest.writeParcelableArray(a, 0);
}

다른 팁

실제로 인터페이스를 확장 할 수 있으며, 그렇게해야 할 것 같습니다. WriteParcelableArray의 제네릭 매개 변수는 확장 인터페이스 (인터페이스 자체가 아님)를 요구하고 있습니다. 인터페이스 myParcelable을 만들어보십시오. 그런 다음 인터페이스를 사용하여 배열을 선언하지만 임플란치가 도착해야합니다.

문제가 해결되었지만 내 솔루션이 다른 것이 었으므로 여기에 게시하고 있습니다. 내 경우 Eclipse는 Abiguity (내 주석 클래스 대신 일부 dom.comment)로 인해 자동으로 잘못된 패키지를 가져 왔습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top