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

【Android】アクティビティ間でオブジェクトを受け渡す方法を徹底解説

この記事では、Androidアプリ開発において、あるアクティビティ(Activity)から別のアクティビティへカスタムオブジェクトを受け渡す方法を、実際のコード例とともにステップ形式で解説します。

実装のポイント

オブジェクトをインテント(Intent)経由で受け渡すには、対象となるクラスにSerializableインターフェースを実装することが重要です。これにより、putExtra()メソッドでオブジェクトを渡し、getSerializableExtra()メソッドで受け取れるようになります。

ステップ1:新規プロジェクトの作成

Android Studioを起動し、「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。

ステップ2:activity_main.xmlにコードを追加

res/layout/activity_main.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=".MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click here to pass object to Second Activity!"
        android:id="@+id/button"
        android:layout_centerInParent="true" />
</RelativeLayout>

ステップ3:Character.javaクラスの作成

新しいJavaクラスを作成し、Character.javaに以下のコードを追加します。ポイントはSerializableを実装している点です。

import java.io.Serializable;
public class Character implements Serializable {
    String name, Proffession, Position;
    String[] abilities;
    public Character(String name, String proffession, String position, String[] abilities) {
        this.name = name;
        Proffession = proffession;
        Position = position;
        this.abilities = abilities;
    }
}

ステップ4:MainActivity.javaにコードを追加

MainActivity.javaに以下のコードを記述します。ボタンがクリックされたタイミングで、Characterオブジェクトを生成してSecondActivityへ渡しています。

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 {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
                Character sports = new Character("CR7", "Football", "Left Winger", new String[]{"Best Freeckicker in the World"});
                intent.putExtra("Character", sports);
                startActivity(intent);
            }
        });
    }
}

ステップ5:SecondActivityの作成

空のアクティビティを新規作成し、名前を「SecondActivity」とします。SecondActivity.javaに以下のコードを追加してください。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.Arrays;
public class SecondActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Character sports = (Character)getIntent().getSerializableExtra("Character");
        TextView textView = findViewById(R.id.textView);
        textView.setText(sports.name +"\n" + sports.Proffession + "\n" + sports.Position+ "\n" + Arrays.toString(sports.abilities));
    }
}

ここでは、getSerializableExtra()メソッドを使って、前画面から送られたCharacterオブジェクトを取得し、TextViewに内容を表示しています。

ステップ6:activity_second.xmlにコードを追加

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:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:textSize="20sp"
        android:layout_centerInParent="true"/>
</RelativeLayout>

アプリの実行と動作確認

それでは、アプリケーションを実行してみましょう。Android端末をパソコンに接続していることを前提としています。Android Studioからアプリを起動するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして接続したモバイル端末を選択すると、端末に初期画面が表示されます。

【Android】アクティビティ間でオブジェクトを受け渡す方法を徹底解説

【Android】アクティビティ間でオブジェクトを受け渡す方法を徹底解説

ボタンをタップすると、Characterオブジェクトのデータ(名前・職業・ポジション・能力)が第二画面に正しく表示されることが確認できます。この手法を使えば、複雑なデータ構造も簡単にアクティビティ間で共有できるため、ぜひ活用してみてください。

  1. Androidでアクティビティ間を画像を受け渡す方法をわかりやすく解説

    はじめに 本記事では、Androidアプリであるアクティビティ(Activity)から別のアクティビティへ画像を受け渡す方法を解説します。ここでは、Intentに画像のリソースIDを格納して渡す、最もシンプルで確実な手法を紹介します。 手順1:新規プロジェクトの作成 Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要事項をすべて入力してプロジェクトを作成しましょう。 手順2:activity_main.xml の編集 res/layout/activity_main.xml に以下のコードを追加します。「Send

  2. 【Android】1つのフラグメントから別のフラグメントへデータを送信する方法(インターフェース活用の実装例)

    はじめに このチュートリアルでは、Androidアプリで1つのフラグメント(Fragment)から別のフラグメントへデータを送信する方法を解説します。フラグメント同士は直接通信することができません。そこで本記事では、カスタムインターフェース「SendMessage」を定義し、ホストとなるMainActivityを仲介してデータを受け渡す、定番かつ推奨されるパターンを紹介します。 具体的には、タブで切り替えられる2つのフラグメントを用意し、1つ目のフラグメントで入力したテキストをボタン操作で2つ目のフラグメントに表示させるサンプルアプリを作成します。 ステップ1:新しいプロジェクトを作成する