-
반응형
안녕하세요, 하루플입니다.
여러 클래스간 데이터 공유는 Application을 활용하거나 ViewModel을 활용하는 등 여러가지 방법이 있습니다.
일반적으로 Activity에서 Activity 혹은 Fragment간 데이터 전송을 위해 Intent를 사용합니다.
흔히 사용하는 기본적인 자료형인 String, Boolean, Int 등은 Intent를 활용해서 다른 클래스로 쉽게 데이터를 전송할 수 있습니다.
일반 자료형 전송 방법
val intent = Intent(this, OtherClass::class.java)intent.putExtra("NUMBER_KEY", number)startActivity(intent)데이터를 전송할 클래스에 putExtra 로 데이터를 넣어줍니다.
흔히 사용하는 일반적인 자료형은 대부분 putExtra로 작동이 가능합니다.
val number = intent.getIntExtra("NUMBER_KEY", 0)
데이터를 전송 받을 클래스에서 위와 같이 전달 받습니다.
List 데이터 전송 방법
아래는 StringList를 전송하는 방법입니다.
val categoryList = listOf("apple", "banana", "orange")val intent = Intent(this, OtherActivity::class.java)intent.putStringArrayListExtra("CATEGORY_LIST", ArrayList(categoryList))startActivity(intent)전송할 클래스에서 "CATEGORY_LIST"를 Key로 사용합니다.
StringList를 전송할 때는 putStringArrayListExtra 를 사용합니다.
val categoryList = intent.getStringArrayListExtra("CATEGORY_LIST")
데이터를 전송 받는 클래스에서는 위와 같이 getStringArrayListExtra 사용하면 됩니다.
데이터 클래스 전송 방법
data class LoginData(val LoginID: String,val LoginPW: String) : Serializable먼저 data class에 Serializable을 상속받습니다.
val intent = Intent(this, OtherActivity::class.java)intent.putExtra("MY_DATA_CLASS_KEY", myDataClass)startActivity(intent)마찬가지로 putExtra 를 사용하고 dataClass를 넣어줍니다.
val loginData = intent.getSerializableExtra("MY_DATA_CLASS_KEY") as LoginData
데이터를 전송받을 클래스에서 getSerializableExtra를 사용해서 입력받습니다.
반응형'개발 > Android' 카테고리의 다른 글
[이펙티브 코틀린] 추상화 설계 (0) 2023.04.11 [이펙티브 코틀린] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (0) 2023.04.10 [Android] 이펙티브 코틀린 3장 재사용성 (0) 2023.03.20 [Kotlin] 안드로이드스튜디오 뷰 사이즈를 조절하는 애니메이션 (0) 2023.03.14 [Kotlin] 안드로이드스튜디오 RecyclerView 스크롤시 데이터가 섞이는 문제 해결방법 (0) 2023.03.07