Android

Parcelize

j_iyeon 2023. 8. 30. 12:13

정의

- 안드로이드 컴포넌트나 Fragment간에 클래스로 데이터를 주고 받을 때 사용

 

사용법

1. build.gradle(Module:app)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'

    //추가
    id 'kotlin-parcelize'
    id 'kotlin-android'
}

 

2. data class 모델 변경

import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
data class TodoModel(
    val title: String?, val description: String?
    ) : Parcelable

 

3. Intent로 데이터 넘겨주기

val intent = Intent().apply {
                
     //data class를 통해서 보내줄 수도 있다.
     putExtra(EXTRA_TODO_MODEL, TodoModel(etTitle.text.toString(), etDescription.text.toString()))

}
setResult(Activity.RESULT_OK, intent)

 

4. 넘겨준 데이터 받기

val todoModel = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    //버전에 따라 다르게
    result.data?.getParcelableExtra(TodoAddActivity.EXTRA_TODO_MODEL, TodoModel::class.java)
} else {
    //버전에 따라 다르게
    result.data?.getParcelableExtra(TodoAddActivity.EXTRA_TODO_MODEL)
}