Skip to content

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object #1

@wnsdudSoftkim

Description

@wnsdudSoftkim

.User_SignUp_PopUp.kt

//이미지 uri 객체를 회원가입 페이지로 보내줌.
            // ViewModel 의 dataImage가 직렬화가 되어야 하는 문제점.
            val intent = Intent()
            val data = viewModel.dataImage as Serializable
            var bundle =Bundle()
            bundle.putSerializable("Image",data)
            intent.putExtras(bundle)
            setResult(Activity.RESULT_OK, intent)
            //액티비티 팝업 닫기
            finish()

데이터를 관리하는 ViewModel 의 data를 직렬화 시켜야 intent 를 통해서 회원가입 페이지로 Image 가 전송된다.
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
에러는 ViewModel 의 dataImage도 직렬화 시켜 줘야 한다고 함.

class DataViewModel : ViewModel(){
    val data = ArrayList<DataSignUp>()
    var dataImage = ArrayList<DataImage>()
    val LiveData = MutableLiveData<ArrayList<DataSignUp>>()
    val LiveDataImage = MutableLiveData<ArrayList<DataImage>>()


    fun setDataImage(item : List<com.esafirm.imagepicker.model.Image> ) {
        //중복되어서 붙여지므로 지워주고 시작함.
        dataImage.clear()
        //이미지 객체를 가져와서 uri 형태로 변환&대입.
        for (i in 0 until item.size) {
            val items =
                ContentUris.withAppendedId(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    item[i].id
                )
            val imagedata = DataImage(Image = items)
            dataImage.add(imagedata)
        }
        LiveDataImage.value=dataImage
    }

    fun deleteDataImage(position: Int) {
//        dataImage.removeAt(position)
//        LiveDataImage.value = dataImage

    }
}

임시 방편 해결

//이미지 uri 객체를 회원가입 페이지로 보내줌.
            //이부분에서 데이터를 보내주면서 dialog를 띄우는 것도 좋을 듯.
            // ViewModel 의 dataImage가 직렬화가 되어야 하는 문제점.
            val intent = Intent()
            val data = images as Serializable
            var bundle =Bundle()
            bundle.putSerializable("Image",data)
            intent.putExtras(bundle)
            setResult(Activity.RESULT_OK, intent)
            //액티비티 팝업 닫기
            finish()

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinghelp wantedExtra attention is needed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions