Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드에서 Intent를 활용해 ArrayList를 다른 액티비티로 전달하는 방법

개요

이 튜토리얼에서는 안드로이드에서 Intent를 사용하여 ArrayList 데이터를 다른 액티비티로 전달하는 방법을 단계별로 알아봅니다. Intent의 putExtra() 메서드와 Serializable 객체를 활용하면 리스트 형태의 데이터를 손쉽게 화면 간에 주고받을 수 있습니다.

1단계: 새 프로젝트 생성

Android Studio에서 새 프로젝트를 생성합니다. 상단 메뉴에서 File → New Project로 이동한 뒤, 필요한 모든 정보를 입력하여 프로젝트를 만들어 주세요.

2단계: activity_main.xml 레이아웃 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 화면 중앙에 버튼 하나를 배치하는 간단한 구조입니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayout"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pass array to 2nd Activity"
        android:layout_centerInParent="true" />
</RelativeLayout>

3단계: MainActivity.java 작성

src/MainActivity.java 파일에 다음 코드를 입력합니다. 버튼 클릭 시 ArrayList에 값을 담고, putExtra() 메서드로 Intent에 데이터를 첨부하여 두 번째 액티비티를 실행합니다.

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity{
    Button button;
    ArrayList<String> numbers = new ArrayList<>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                numbers.add("ONE");
                numbers.add("TWO");
                numbers.add("THREE");
                numbers.add("FOUR");
                numbers.add("FIVE");
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("key", numbers);
                startActivity(intent);
            }
        });
    }
}

핵심 포인트

ArrayList는 기본적으로 Serializable을 구현하고 있으므로, 별도의 변환 과정 없이 putExtra() 메서드에 바로 넣어 전달할 수 있습니다.

4단계: SecondActivity.java 작성

새 액티비티(SecondActivity)를 생성한 후, SecondActivity.java에 아래 코드를 추가합니다. getSerializableExtra() 메서드로 전달된 ArrayList를 받아와 TextView에 출력합니다.

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.ArrayList;
public class SecondActivity extends AppCompatActivity {
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        textView = findViewById(R.id.textView);
        ArrayList<String> numbersList = (ArrayList<String>) getIntent().getSerializableExtra("key");
        textView.setText(String.valueOf(numbersList));
    }
}

5단계: activity_second.xml 레이아웃 작성

activity_second.xml 파일에 다음 코드를 추가하여, 전달받은 리스트를 표시할 TextView를 화면 중앙에 배치합니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text=""
        android:textSize="24sp"
        android:textStyle="bold"/>
</RelativeLayout>

6단계: AndroidManifest.xml 설정

AndroidManifest.xml에 아래 코드를 추가하여 SecondActivity를 등록합니다. 매니페스트에 액티비티가 선언되지 않으면 실행 시 오류가 발생하므로 반드시 확인하세요.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SecondActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 안드로이드에서 Intent를 활용해 ArrayList를 다른 액티비티로 전달하는 방법 Run 아이콘을 클릭하세요. 목록에서 본인의 모바일 기기를 선택하면, 기기에서 아래와 같은 기본 화면이 표시됩니다.

안드로이드에서 Intent를 활용해 ArrayList를 다른 액티비티로 전달하는 방법

버튼을 누르면 SecondActivity로 이동하면서 "[ONE, TWO, THREE, FOUR, FIVE]"라는 리스트 값이 정상적으로 전달되어 화면에 출력되는 것을 확인할 수 있습니다.