Android application development 第10章:Bundleを使ったデータの受け渡し

Androidアプリでは、画面(Activity)間でデータを渡す必要がある場面がよくあります。
Javaのアプリケーションでも、あるウィンドウから別のウィンドウに情報を渡すことがありますよね。それと同じですが、Androidではそれを**IntentBundleという仕組みで行う**のが基本です。


■ Bundleとは?

Bundle は、キーと値のペアを保存できる「マップ」のようなものです。
Androidでは、値を受け渡ししたり、状態を一時保存するための標準的なコンテナとして使われます。

Bundle bundle = new Bundle();
bundle.putString("username", "tanaka");
bundle.putInt("age", 25);

文字列、数値、真偽値、配列、Serializable など、さまざまなデータ型を保存できます。


■ Activity間のデータ受け渡し(画面遷移)

たとえば、「ログイン画面からメイン画面にユーザー名を渡す」ような場合:

● 送り側(MainActivity から SecondActivity)

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("username", "tanaka");  // Intent に直接データを追加(内部的には Bundle)
startActivity(intent);

実は putExtra() の内部では、Intent が持つ Bundle に値を入れています。

● 受け取り側(SecondActivity)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    Intent intent = getIntent();
    String username = intent.getStringExtra("username");

    TextView textView = findViewById(R.id.textView);
    textView.setText("ようこそ、" + username + "さん!");
}

getIntent().getStringExtra() で受け取れます。


Bundle を明示的に使いたい場合

Intent の putExtras()getExtras() を使って、まとめてデータを渡すこともできます。

Bundle bundle = new Bundle();
bundle.putString("username", "tanaka");
bundle.putInt("age", 25);

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtras(bundle);  // Intent にまとめて Bundle を渡す
startActivity(intent);

受け取り側では:

Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    String username = bundle.getString("username");
    int age = bundle.getInt("age");
}

■ Javaエンジニアとしての違和感?

  • Bundle の中身は 型安全ではない(キーのスペルミスなどはコンパイルで検知されない)
  • SerializableParcelable を使う必要がある(Javaのシリアライズと似て非なるParcelable
  • BundleIntent に入れられるものは、あくまで プリミティブ or 軽量データが前提

とはいえ、Activity間のデータ渡し=Intent+Bundleが標準的な方法なので、まずはこの形に慣れるのが一番です。


■ その他の用途(ちょっと先の話)

  • onSaveInstanceState()onRestoreInstanceState() の中でも Bundle は使われます(画面回転時の状態保持)
  • Fragment とのデータやりとりにも Bundle が使われます(setArguments() / getArguments()

■ まとめ

項目内容
Bundleとは?キーと値のマップ。Intentや状態保存に使われる
よく使うケースActivity間の画面遷移時に値を渡す
値の渡し方intent.putExtra() または intent.putExtras(bundle)
値の受け取り方intent.getStringExtra()intent.getExtras() から取得
注意点型安全でないためキーの間違いに注意

最初は冗長に感じるかもしれませんが、Androidでは頻出パターンなので早めに慣れておくと安心です。

mh

Related Posts

Android application development 第33章:実践ミニアプリ:天気情報アプリ

Android application development 第32章:実践ミニアプリ:シンプルなToDoリスト

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 88 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 101 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 102 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 119 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 112 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 124 views