본문 바로가기
Developer/Android, Java

[안드로이드] ArrayList<Object> 인텐트 넘기는 방법

by Doony 2019. 5. 22.

액티비티 간 데이터를 주고 받을 때 Intent를 많이 사용하는데, 방식은 아래와 같습니다.

  • SenderActivity.java

    1
    2
    3
    Intent intent = new Intent(this, ReceiverActivity.class);
    intent.putExtra("string", string);
    startActivity(intent);
    cs

  • ReceiverActivity.java

    1
    2
    Intent intent = getIntent();
    String receivedString = intent.getExtras.getString("string")
    cs

보내는 액티비티에서는 변수 타입 구분 없이 putExtra로 key, value값으로 보낼 수 있으나, 받는 액티비티에서는 해당 변수의 타입을 구분하여 받도록 되어 있습니다.
그렇다보니, 사용자가 직접 정의한 오브젝트를 인텐트로 넘기기 위해서는 약간 다른 방법이 필요합니다.

  1. 보내는 액티비티에서는 위와 같은 방식으로 하면 됩니다.

  2. 받는 액티비티에서는 아래와 같이 받습니다.

    1
    ArrayList<Object> list = (ArrayList<Object>) intent.getSerializableExtra("key");
    cs
  3. 오브젝트가 Serializable를 implements해야 합니다.

    1
    2
    public class Object implements Serializable {
    }
    cs

이와 같은 방식으로 액티비티 간, 유저가 선언한 새로운 클래스타입의 변수를 주고받을 수 있습니다.

댓글