본문 바로가기

만났던 에러들

android.os.BadParcelableException: Parcelable encountered IOException writing serializable object (name = model.Images)

아주 오래전에도 한번 만났던 오류인 것 같은데.. 

 

에러가 발생했던 이유는...

Serialize 할 수 없는 객체인 Uri를 DataClass 에서 사용하려고 했었기 때문이다.

 

아래 코드는 내가 작성한 Model 클래스다.

 

import android.net.Uri
import java.io.Serializable

data class Images(val uri : Uri) : Serializable

 

이미지 하나만 보여주는 리사이클러뷰를 표현하기 위해서 위와 같이 개발했다.

갤러리에서 사진을 여러장 선택하면 사진 uri값이 list에 담기고, 인텐트를 사용해서 다음 화면(액티비티)로 넘겨주려고 했다. 해당 코드는 아래와 같다.

 

ChooseMediaActivity.kt

...


		// onCreate 안이다.
        binding.nextStep.setOnClickListener {

            Logger.v(imageAdapter.getImages().size.toString())
            Logger.v(imageAdapter.getImages().toString())

            val intent: Intent = Intent(this, PostingMediaActivity::class.java)
            intent.putExtra("IDENTICAL_NAME", imageAdapter.getImages())
            startActivity(intent)
        }
        
        
        
...

 

 

android.os.BadParcelableException: Parcelable encountered IOException writing serializable object (name = model.Images)

 

Uri는 직렬화가 가능한 자료형이 아니기 때문에 Parcelable 인터페이스를 구현하는 대신 직렬화가 가능한 자료형을 사용해야된다.