Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidで前のアクティビティに戻る方法【finish()メソッドの使い方を解説】

Androidアプリ開発では、あるアクティビティ(画面)から別のアクティビティへ移動した後、元の画面へ戻りたいケースがよくあります。この記事では、finish() メソッドとアクティビティスタックの仕組みを使って、前のアクティビティに戻る方法をサンプルコード付きでわかりやすく解説します。

実装の全体像

今回作成するのは、以下のようなシンプルな2画面構成のアプリです。

  • 1つ目の画面(MainActivity)のテキストをタップすると、2つ目の画面(Main2Activity)が開きます。
  • 2つ目の画面のテキストをタップすると、finish() メソッドによって現在のアクティビティが終了し、自動的に前の画面へ戻ります。

ステップ1:Android Studioで新規プロジェクトを作成する

まず、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 を1つ定義しています。ユーザーがこのテキストをタップすると、後ほど作成する2つ目のアクティビティが起動される仕組みです。

ステップ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 を起動しています。Intent はAndroidにおける画面遷移の基本となる仕組みです。

※ 新しいバージョンのAndroid Studioでプロジェクトを作成した場合、AppCompatActivity のインポート文は androidx.appcompat.app.AppCompatActivity となりますので、環境に合わせて読み替えてください。

ステップ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 を配置しており、このテキストをタップすると最初のアクティビティへ戻るようになります。

ステップ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() メソッドの役割とは?

ここでのポイントは finish() の呼び出しです。Androidでは、起動されたアクティビティはすべて「アクティビティスタック」と呼ばれる積み重ね構造で管理されています。スタックの一番上にあるアクティビティを finish() で終了すると、その下にあった前のアクティビティが自動的に表示される仕組みです。これにより、複雑な画面遷移処理を書かなくても、簡単に前の画面へ戻ることができます。

アプリを実行して動作を確認する

それでは実際にアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続している前提で説明します。Android Studioでプロジェクト内の任意のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。デバイスとして自分のスマートフォンを選択すると、端末に以下のような初期画面が表示されます。

Androidで前のアクティビティに戻る方法【finish()メソッドの使い方を解説】

上記の初期画面でテキストをタップすると、2つ目のアクティビティが起動されます。

Androidで前のアクティビティに戻る方法【finish()メソッドの使い方を解説】

さらに2つ目の画面でテキストをタップすると、finish() が呼び出され、1つ目のアクティビティへ自動的に戻ります。

Androidで前のアクティビティに戻る方法【finish()メソッドの使い方を解説】

まとめ

前のアクティビティへの戻り方は、finish() メソッドを呼び出すだけで実現できます。これはアクティビティスタックの仕組みによるもので、Androidの画面遷移において最も基本的かつ重要な概念のひとつです。なお、システム標準の「戻る」ボタンやジェスチャーナビゲーションでも同様に前の画面へ戻れるため、通常のアプリでは明示的な戻る操作を実装しなくても自然な操作性を実現できます。

  1. 【Android】セカンドアクティビティからメインアクティビティへデータを返す方法を解説

    このチュートリアルでは、Androidアプリにおいてセカンドアクティビティからメインアクティビティへデータ(処理結果)を返す方法を、サンプルコードを交えて解説します。2つの数値を入力して別画面へ渡し、その画面での計算結果を元の画面に表示させるアプリを例に、データ受け渡しの基本を学びましょう。ポイントは startActivityForResult() と onActivityResult() の2つです。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力して新しいプロジェクトを作成します。 ス

  2. Androidアプリでフラグメントからアクティビティのメソッドを呼び出す方法【サンプルコード付き】

    このチュートリアルでは、Androidアプリにおいてフラグメントからアクティビティのメソッドを呼び出す実装方法を解説します。フラグメントは単体では動作せず、必ずアクティビティ上に存在するため、getActivity()で親アクティビティの参照を取得し、適切な型にキャストすることで、アクティビティのpublicメソッドを直接呼び出すことができます。 実装手順 ステップ1:新規プロジェクトの作成 Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成しましょう。 ステップ2:activ