Kotlin parcel.readList 에서 list 패싱하기
조회수 866회
중요 질문
- Android Studio에서 intent로 custom class를 넘기고 싶어서 parcelable class를 상속받았습니다.
- parcel.readInt(), parcel.writeInt(value) 등 기본형은 넘어가는데 list가 안넘어가네요...
- parcel.readList(~~)에서 에러가 납니다. Read-Only를 하지 않은 것 같은데 왜 자꾸 했다고 할까요...
java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
추가 질문
- classLoader라는 게 class의 ADT(?)를 넘겨주는 건가요?
- 지금은 passing variable을
List<Int>
로 잡았지만List<enum class>
도 넘길 수 있을까요? - 이거 답변해주시는 분들 왜 이렇게 공부 잘하세요 ㅠㅠ
복받으실 거에요
코드
아래 코드는 불필요 한 거 다 생략한 코드입니다
class Menu() : Parcelable { var vegetables = listOf<Int>() constructor(parcel: Parcel) : this() { parcel.readList(vegetables, Int.javaClass.classLoader) } override fun writeToParcel(dest: Parcel?, flags: Int) { if(dest != null) dest.writeList(vegetables) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator<Menu> { override fun createFromParcel(parcel: Parcel): Menu { return Menu(parcel) } override fun newArray(size: Int): Array<Menu?> { return arrayOfNulls(size) } } }
댓글 입력