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

Androidで複数のアクティビティ(画面)を切り替える方法【サンプルコード付き】

本記事では、Androidアプリで複数の画面(アクティビティ)をIntentを使って切り替える方法を、サンプルコードとともにわかりやすく解説します。ボタンをタップすると「MainActivity」から「SecondActivity」へ遷移し、そこから再び元の画面へ戻れるというシンプルな例です。

手順1:Android Studioで新規プロジェクトを作成する

Android Studioを開き、メニューの「File」→「New Project」を選択して、必要な項目を入力のうえ新しいプロジェクトを作成します。

手順2:activity_main.xmlにコードを追加する

メイン画面のレイアウトファイル res/layout/activity_main.xml に、以下のコードを記述します。上部にはタイトル表示用のTextView、画面中央にはSecondActivityを開くためのButtonを配置しています。

<RelativeLayout 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">
    <TextView
        android:text="MainActivity"
        android:textSize="24sp"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"/>
    <Button
        android:id="@+id/btnOpenAct2"
        android:text="Open Second Activity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
</RelativeLayout>

手順3:MainActivity.javaにコードを追加する

続いて、src/MainActivity.java に以下のコードを追加します。画面遷移の鍵となるのは Intent クラスです。「new Intent(遷移元のコンテキスト, 遷移先のクラス)」でインテントを生成し、startActivity() メソッドに渡すだけで、指定したアクティビティへ移動できます。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.btnOpenAct2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}

手順4:新しい空のアクティビティを作成する

「File」→「New」→「Activity」→「Empty Activity」から SecondActivity を新規作成し、各ファイルに以下のコードを記述します。

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".SecondActivity">
    <TextView
        android:text="Second Activity"
        android:textSize="24sp"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"/>
    <Button
        android:id="@+id/btnOpenMain"
        android:text="Go back to MainActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
</RelativeLayout>

SecondActivity.java

SecondActivity側では、ボタンをタップしたときにMainActivityへ戻る処理を実装します。仕組みは手順3とまったく同じです。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SecondActivity extends AppCompatActivity {
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        button = findViewById(R.id.btnOpenMain);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(SecondActivity.this, MainActivity.class);
                startActivity(i);
            }
        });
    }
}

手順5:AndroidManifest.xmlにコードを追加する

プロジェクトで使用するすべてのアクティビティは、AndroidManifest.xml に宣言する必要があります。以下のように SecondActivity の宣言も忘れずに追加しましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <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=".SecondActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行して動作を確認しよう

それではアプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続したうえで、プロジェクトのアクティビティファイルを開き、Android Studioツールバーの「Run」アイコンをクリックします。デバイス選択画面で自分のスマートフォンを指定すると、端末にアプリがインストールされて起動します。

まずは初期画面として MainActivity が表示されます。

Androidで複数のアクティビティ(画面)を切り替える方法【サンプルコード付き】

Androidで複数のアクティビティ(画面)を切り替える方法【サンプルコード付き】

「Open Second Activity」ボタンをタップしてSecondActivityへ画面が切り替わり、「Go back to MainActivity」ボタンで元の画面に戻ることができれば成功です。

補足:AndroidX環境での注意点

近年のAndroid Studioで新規作成されるプロジェクトでは、旧サポートライブラリの代わりにAndroidXが標準で使用されます。その場合は import 文を android.support.v7.app.AppCompatActivity から androidx.appcompat.app.AppCompatActivity に置き換えてください。画面遷移の基本的な手順自体は変わりません。

  1. AndroidのPreferenceScreenにボタンを追加する方法をわかりやすく解説

    はじめに この記事では、Androidアプリの設定画面(PreferenceScreen)にボタンを追加する方法を、実際のコード例とともにステップごとに解説します。設定画面内のボタンは、通常のPreference要素としてXMLで定義し、Java側でクリックリスナーを設定することで、好きな動作を割り当てることができます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトのセットアップを完了させてください。 ステップ2:レイアウトファイル(acti

  2. AndroidでプログラムからScrollViewを無効化する方法

    このチュートリアルでは、AndroidアプリでScrollViewをプログラム的に無効化する方法を解説します。setOnTouchListener()を使ってタッチイベントを横取りすることで、ユーザーによるスクロール操作を防ぐことができます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。 ステップ2:レイアウトファイルの編集(res/layout/activity_main.xml) 以下のコードを res/lay