아주 오래전에도 한번 만났던 오류인 것 같은데..
에러가 발생했던 이유는...
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 인터페이스를 구현하는 대신 직렬화가 가능한 자료형을 사용해야된다.
'만났던 에러들' 카테고리의 다른 글
java.lang.IllegalStateException: Flow invariant is violated:Emission from another coroutine is detected. (2) | 2024.03.04 |
---|