개요
안드로이드 앱을 개발하다 보면 한 액티비티에서 다른 액티비티로 이동한 뒤, 다시 이전 액티비티로 돌아가야 하는 경우가 매우 흔합니다. 이번 튜토리얼에서는 안드로이드에서 이전 액티비티로 돌아가는 방법을 예제 코드와 함께 단계별로 살펴보겠습니다.
핵심 원리는 간단합니다. 안드로이드는 실행된 모든 액티비티를 액티비티 스택(Activity Stack)에 저장합니다. 따라서 최상위에 있는 현재 액티비티를 finish() 메서드로 종료하면, 스택에 남아 있던 이전 액티비티가 자동으로 화면에 나타나게 됩니다.
1단계: 새 프로젝트 생성
Android Studio를 실행한 후 File → New Project를 선택하고, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.
2단계: activity_main.xml 레이아웃 작성
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" tools:context=".MainActivity" android:background="#33FFFF00" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/text" android:textSize="18sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
위 코드에는 TextView 하나가 배치되어 있습니다. 사용자가 이 TextView를 클릭하면 새로운 액티비티(두 번째 화면)가 열리도록 구성할 것입니다.
3단계: MainActivity.java 코드 작성
src/MainActivity.java 파일에 아래 코드를 추가합니다.
package com.example.andy.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.TextView;
import org.w3c.dom.Text;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView=findViewById(R.id.text);
textView.setText("click for second activity");
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i =new Intent(MainActivity.this,Main2Activity.class);
startActivity(i);
}
});
}
}위 코드에서는 TextView에 클릭 리스너를 등록하고, 클릭 시 Intent 객체를 통해 Main2Activity를 시작하도록 처리했습니다.
4단계: activity_main2.xml 레이아웃 작성
res/layout/activity_main2.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" tools:context=".MainActivity" android:background="#33FFFF00" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/text" android:textSize="18sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
마찬가지로 TextView가 배치되어 있으며, 사용자가 이 TextView를 클릭하면 첫 번째 액티비티로 되돌아가게 됩니다.
5단계: Main2Activity.java 코드 작성
src/Main2Activity.java 파일에 아래 코드를 추가합니다.
package com.example.andy.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView textView=findViewById(R.id.text);
textView.setText("click for go back first activity");
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}위 코드의 핵심은 finish() 호출입니다. 모든 액티비티는 액티비티 스택에 순차적으로 저장되므로, 스택의 최상위 액티비티를 종료하면 그 아래에 쌓여 있던 이전 액티비티가 자동으로 화면에 표시됩니다.
애플리케이션 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 버튼을 클릭하고, 목록에서 본인의 모바일 기기를 선택하세요. 그러면 기기 화면에 아래와 같은 기본 화면이 표시됩니다.

위 화면에서 TextView를 클릭하면 아래와 같이 두 번째 액티비티가 호출됩니다.

이번에는 두 번째 화면에서 TextView를 다시 클릭해 보세요. 아래와 같이 첫 번째 액티비티로 정상적으로 돌아오는 것을 확인할 수 있습니다.

마무리
정리하면, 안드로이드에서 이전 액티비티로 돌아가는 가장 기본적인 방법은 현재 액티비티에서 finish()를 호출하는 것입니다. 이 방식은 액티비티 스택의 LIFO(Last-In, First-Out) 구조를 그대로 활용하기 때문에 별도의 Intent 설정 없이도 간편하게 이전 화면으로 복귀할 수 있다는 장점이 있습니다.