[Android] 액티비티 간 intent로 객체 전달하기

neoneoneo·2024년 4월 5일
0

android

목록 보기
11/16

액티비티 간 데이터 넘기기 - 객체 외 변수 편

액티비티 간 데이터를 넘기는 방법 중 Intent를 이용하면 아래와 같은 패턴으로 데이터를 넘기게 된다.

  1. 보내는 쪽에서 데이터를 키와 함께 intent에 담아 보낸다.
val id = 00001
intent.putExtra("id", id)
  1. 받는 쪽에서는 intent로 보내는 쪽과 동일한 키를 사용하여 받는다.
val = intent.getIntExtra("id", 0)

액티비티 간 데이터 넘기기 - 객체 편

만약 객체를 넘기고 싶다면? 할 것들이 많아진다 ^^

  1. 객체를 담을 데이터 클래스를 만든다.
data class Item(
    val userName: String,
    val postTitle: String,
    var postId: Int,
) {
    companion object { 
      val itemList = arrayListOf(
          MainPageItem(
              "neoneoneo", //userName
              "[Android] 액티비티 간 intent로 객체 전달하기", //postTitle
              "neo0001" //postId
              )
      fun listData(): ArrayList<MainPageItem> {
          return itemList
      }
  }
  • 이런식으로 companion object 안에 데이터를 담고, listData()로 해당 데이터를 반환해주게끔 작성할 수도 있다.
  1. 데이터 클래스에 Srializable을 구현한다.
data class Item(
    val userName: String,
    val postTitle: String,
    var postId: Int,
) : Serializable { // <- here!!
    companion object { 
      val itemList = arrayListOf(
          MainPageItem(
              "neoneoneo", //userName
              "[Android] 액티비티 간 intent로 객체 전달하기", //postTitle
              "neo0001" //postId
              )
      fun listData(): ArrayList<MainPageItem> {
          return itemList
      }
  }  
  1. 보내는 쪽에서 처리한다.
intent.putExtra("item", item)
  1. 받는 쪽에서 처리한다.
var thisItem = intent.getSerializableExtra("item") as Item
  • Serializable 형태의 데이터를 받아야 하므로 getSerializableExtra()를 사용한다.

[TIL-240405]

0개의 댓글