이 글에서는 데이터를 별도로 저장하지 않고 안드로이드의 한 액티비티(Activity)에서 다른 액티비티로 값을 전달하는 방법을 알아봅니다. 가장 간단하고 널리 쓰이는 두 가지 방식, 즉 정적(Static) 메서드와 인텐트(Intent)를 활용한 방법을 단계별 예제 코드와 함께 설명합니다.
방법 1. 정적(Static) 메서드 활용하기
아래 예제는 정적 메서드를 사용해 두 액티비티 사이에서 데이터를 주고받는 과정을 보여줍니다.
1단계 — Android Studio에서 새 프로젝트를 생성합니다. 상단 메뉴에서 File → New Project로 이동한 후, 필요한 항목을 모두 입력하여 새 프로젝트를 만듭니다.
2단계 — res/layout/activity_main.xml 파일에 다음 코드를 추가합니다.
<?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="전달할 내용을 입력하세요"
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="다음" />
</LinearLayout>3단계 — src/MainActivity.java 파일에 다음 코드를 추가합니다.
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private static String value;
public static String getValue() {
return value;
}
@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) {
value = editText.getText().toString().trim();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}4단계 — res/layout/activity_second.xml 파일에 다음 코드를 추가합니다.
<?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단계 — src/SecondActivity.java 파일에 다음 코드를 추가합니다.
package com.example.myapplication;
import androidx.appcompat.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);
TextView textView = findViewById(R.id.text_view);
textView.setText(MainActivity.getValue());
}
}6단계 — 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에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run
아이콘을 클릭합니다. 목록에서 자신의 모바일 기기를 선택하면, 기기 화면에 아래와 같은 기본 화면이 표시됩니다.

참고: 정적 변수는 프로세스가 종료되면 값이 사라질 수 있으며, 잘못 사용하면 메모리 누수의 원인이 되기도 합니다. 따라서 이 방식은 학습용 데모에 적합하며, 실제 앱에서는 아래에서 소개할 인텐트 방식을 사용하는 것이 좋습니다.
방법 2. 인텐트(Intent) 활용하기
이번에는 인텐트에 데이터를 담아 전달하는, 안드로이드에서 가장 표준적인 방법을 살펴봅니다.
1단계 — Android Studio에서 새 프로젝트를 생성합니다. File → New Project로 이동하여 필요한 세부 정보를 모두 입력해 프로젝트를 만듭니다.
2단계 — res/layout/activity_main.xml 파일에 다음 코드를 추가합니다.
<?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="전달할 내용을 입력하세요"
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="다음" />
</LinearLayout>3단계 — src/MainActivity.java 파일에 다음 코드를 추가합니다.
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.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();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("value", value);
startActivity(intent);
}
});
}
}4단계 — res/layout/activity_second.xml 파일에 다음 코드를 추가합니다.
<?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단계 — src/SecondActivity.java 파일에 다음 코드를 추가합니다.
package com.example.myapplication;
import androidx.appcompat.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 파일에 다음 코드를 추가합니다.
<?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에서 액티비티 파일을 열고 툴바의 Run
아이콘을 클릭합니다. 기기를 선택하면 기본 화면이 나타나고, 입력한 값이 두 번째 액티비티로 정상적으로 전달되는 것을 확인할 수 있습니다.

두 방법 비교 및 마무리
- 정적 메서드 방식: 구현이 매우 간단하지만, 프로세스 종료 시 값이 유실될 수 있고 메모리 관리 측면에서 권장되지 않습니다. 간단한 학습용 데모에 적합합니다.
- 인텐트 방식: putExtra()로 데이터를 담아 전달하고 getExtras()로 받아 사용하는, 안드로이드에서 공식적으로 권장하는 표준 방식입니다. 실제 앱 개발에서는 이 방법을 사용하는 것이 가장 안전하고 일반적입니다.