안드로이드의 소포에 소포의 배열을 쓰십시오
-
19-09-2019 - |
문제
구현하는 객체 배열을 쓰려고합니다. 말할 수 있습니다 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을 넣을 때 같은 문제가 있습니다 ArrayList
의 Parcelable
s에 s Intent
:
Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);
수확량 :
PutparcelableArraylistextra (String, arraylist <? extends parcelable>) 방법은 인수에 적용 할 수 없습니다 (String, arraylist <location>).
이건 때문일 수 있습니다 Location
내가 위에서 일하고 있던 수업이었습니다 (포장 Arrival
s)하지만 나는 그렇게 생각하지 않습니다.
해결책 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)로 인해 자동으로 잘못된 패키지를 가져 왔습니다.