2012-11-29 2 views
2

Parcel 객체를 복제하려고합니다 (분할 가능하지 않음).Parcel 객체를 복제하는 방법

clone() 메서드는 보호되어 있으므로 사용할 수 없습니다. 소포 클래스는

를 '복제 가능한'구현하지 않기 때문에 나는 또한 문제의 해결책 수행하려고 반사를 사용하여 호출 할 수 없습니다 : Create a copy of parcel object 를하지만, 소포 유형 자체에 대한 적용되지 않습니다 - 그 이유 'writeToParcel'이 소포 유형 자체에 정의되어 있지 않다는 것입니다. 따라서 'Parcel a'객체의 경우 a.writeToParcel (parcel, 0)은 컴파일되지 않습니다.

+2

소포를 분류 할 수 없습니다. – njzk2

답변

-1

당신은

byte[] rawData = original.marshall(); 
Parcel clone = Parcel.obtain(); 
clone.unmarshall(rawData, 0, rawData.length); 
clone.setDataPosition(original.dataPosition()); 

그것은 비록 모든 소포 작동하지 않는 비 정렬 화/정렬 화에 의해 그것을 할 수 있습니다. 나는 그것이 능동적 인 물건으로 소포에서 실패한 것 같지만, 나는 확실히 시험해 보지 않았다.

+0

불완전한 해결책이고 실제 성과가 없기 때문에 투표를 중단하십시오. 소포 # appendFrom 가야합니다. – xaethos

3

사용 Parcel.appendFrom()

이것은 정렬 화 및 비 정렬 화보다 더 효율적이며 소포의 객체 참조 또는 FileDescriptor들에 대한 데이터가 손실되지 않습니다.

출처 : 이것에 대해 이야기하는 Android 프레임 워크 개발자를 우회하고 Stackoverflow 질문을 업데이트하기로 결정했습니다.

관련 문제