이번 튜토리얼에서는 데이터를 영구적으로 저장하지 않고 액티비티(Activity) 간에 데이터를 전달하는 방법을 다룹니다. 가장 간단한 두 가지 방식인 Static(정적) 메서드와 Intent(인텐트)를 활용하는 방법을 단계별로 살펴보겠습니다.
1. Static 메서드를 사용한 데이터 전달
첫 번째 방법은 정적(Static) 변수와 getter 메서드를 활용해 액티비티 사이에 값을 전달하는 방식입니다. 별도의 Intent extras 없이도 간단하게 구현할 수 있다는 장점이 있습니다.
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에 아래 코드를 추가합니다. 핵심은 static 변수 value와 이를 반환하는 getValue() 메서드입니다. 버튼을 클릭하면 입력된 텍스트를 static 변수에 저장한 뒤 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 {
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단계: 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에서는 MainActivity의 static 메서드인 MainActivity.getValue()를 호출해 전달받은 값을 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);
TextView textView = findViewById(R.id.text_view);
textView.setText(MainActivity.getValue());
}
}
6단계: AndroidManifest.xml 설정
AndroidManifest.xml에 두 개의 액티비티를 모두 등록합니다. MainActivity는 LAUNCHER 인텐트 필터를 가지며, SecondActivity는 일반 액티비티로 선언하면 됩니다.
<?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(실행) 아이콘을 클릭하세요. 실행 대상 기기 목록에서 자신의 모바일 기기를 선택하면, 기기 화면에 기본 화면이 표시됩니다.
EditText에 원하는 텍스트를 입력하고 Next 버튼을 누르면 SecondActivity로 전환되면서 입력했던 값이 그대로 화면에 출력되는 것을 확인할 수 있습니다.

마무리 및 참고 사항
Static 메서드 방식은 구현이 매우 간단하지만, 프로세스가 종료되면 값이 사라지고 메모리 누수 위험이 있어 임시 데이터 전달에만 적합합니다. 실무에서는 Intent의 putExtra()와 getExtras()를 사용하는 방식이 더 권장되며, 데이터를 영구 저장해야 한다면 SharedPreferences나 Room 데이터베이스 같은 영속성 솔루션을 활용하는 것이 좋습니다.