2011-09-23 2 views
2

Serializable 인터페이스를 사용하여 하나의 작업에서 다른 작업으로 개체를 전달했습니다. 발신자 쪽에서는 putExtra이고 수신자 쪽에서는 getSerializable입니다. 모든 것이 잘 작동하지만 (처음으로) 다음과 같은 오류보고받은 :안드로이드 - Serializable 인터페이스 문제

java.lang.RuntimeException가를 : Parcelable은 IOException이이

나는 이유를 이해하지 않습니다 에게 직렬화 객체를 읽고 발생 이 예외는 을 사용하고 있으므로 getParcelable이 아니기 때문에 생성되었습니다.

안드로이드 전용으로 설계 되었기 때문에 대신 Parcelable 인터페이스를 구현해야한다는 것을 알고 있습니다.하지만 결국이 작업을 끝낼 것입니다.하지만 왜이 오류가 발생하는지 이해하고 싶습니다.

감사합니다.

답변

1

ParcelableIntent가 다른 하나의 Activity에서 보내는 때문에이 오류에 언급 된 내부 Bundle을 가지고 있으며,이 BundleParcelable입니다. Intent.putExtra()으로 전화하면이 여분이 Bundle 내부에 추가됩니다. 활동간에 Intent이 전달되면 해당 Bundle은 바이트 배열로 변환되고 그로부터 변환되며 따라서 Serializable 개체가됩니다.

그러나이 오류가 발생하는 이유는 알 수 없습니다. 아마도 writeObject()/readObject() 구현의 일부 버그 때문일 수 있습니다.