이 예제는 안드로이드(Android)에서 Bundle을 사용하여 한 액티비티(Activity)에서 다른 액티비티로 데이터를 전송하는 방법을 단계별로 설명합니다. EditText에 입력한 값을 Bundle에 담아 Intent로 전달하고, 두 번째 액티비티에서 해당 값을 받아 화면에 표시하는 기본적인 패턴을 다룹니다.
1단계 — 새 프로젝트 생성
Android Studio에서 File → New Project를 선택하고, 새 프로젝트 생성에 필요한 모든 정보를 입력하여 프로젝트를 만듭니다.
2단계 — activity_main.xml 레이아웃 작성
다음 코드를 res/layout/activity_main.xml 파일에 추가합니다. 화면에는 값을 입력받을 EditText와 다음 화면으로 이동할 Button이 배치됩니다.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout 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:layout_margin = "16dp" android:orientation = "vertical" tools:context = ".MainActivity"> <EditText android:id = "@+id/edit_text" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_gravity = "center" android:hint = "Enter something to pass" android:inputType = "text" /> <Button android:id = "@+id/button" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center" android:layout_marginTop = "16dp" android:text = "Next" /> </LinearLayout>
3단계 — MainActivity.java 구현
다음 코드를 src/MainActivity.java 파일에 추가합니다. 버튼 클릭 시 EditText의 값을 읽어와 Bundle에 저장한 뒤, Intent에 담아 SecondActivity로 전달합니다.
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = findViewById(R.id.edit_text);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value = editText.getText().toString().trim();
Bundle bundle = new Bundle();
bundle.putString("value",value);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}핵심 포인트
Bundle 객체를 생성하고 putString("key", value) 형태로 데이터를 저장한 후, intent.putExtras(bundle)로 Intent에 첨부하면 됩니다. 여러 개의 데이터를 한 번에 전달할 때도 Bundle 하나에 담아 보낼 수 있어 편리합니다.
4단계 — activity_second.xml 레이아웃 작성
다음 코드를 res/layout/activity_second.xml 파일에 추가합니다. 전달받은 값을 표시할 TextView가 배치됩니다.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout 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:layout_margin = "16dp" android:orientation = "vertical" tools:context = ".SecondActivity"> <TextView android:id = "@+id/text_view" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_gravity = "center" /> </LinearLayout>
5단계 — SecondActivity.java 구현
다음 코드를 src/SecondActivity.java 파일에 추가합니다. getIntent().getExtras()로 전달된 Bundle을 꺼내고, null 체크 후 저장된 값을 TextView에 설정합니다.
package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle bundle = getIntent().getExtras();
if (bundle ! = null) {
String value = bundle.getString("value");
TextView textView = findViewById(R.id.text_view);
textView.setText(value);
}
}
}6단계 — AndroidManifest.xml 등록
새로 만든 SecondActivity를 매니페스트에 반드시 등록해야 합니다. 다음 코드를 androidManifest.xml 파일에 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?> <manifest xmlns:android = "https://schemas.android.com/apk/res/android" package = "com.example.myapplication"> <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 = ".MainActivity"> <intent-filter> <action android:name = "android.intent.action.MAIN" /> <category android:name = "android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name = ".SecondActivity"></activity> </application> </manifest>
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 모바일 기기가 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서
실행 아이콘을 클릭하세요. 목록에서 본인의 모바일 기기를 선택하면, 기기 화면에 아래와 같은 기본 화면이 표시됩니다.

EditText에 원하는 문자열을 입력하고 Next 버튼을 누르면 SecondActivity로 이동하며, 입력했던 값이 그대로 화면에 출력되는 것을 확인할 수 있습니다.