본문 바로가기

Android

Parcelize

정의

- 안드로이드 컴포넌트나 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)
}

 

'Android' 카테고리의 다른 글

사용자 위치 얻기  (2) 2023.09.15
ROOM  (1) 2023.09.14
어댑터뷰  (0) 2023.08.29
Dialog  (0) 2023.08.25
Fragment  (0) 2023.08.24