画面遷移する際に、前の画面から次の画面へデータを持っていく方法を知っていますか?
この記事では、Androidの開発でよく使われるIntentを使ったデータの送受信方法について、わかりやすく解説します!コード例と一緒にサクッと学んでいきましょう!
まずはじめに
画面遷移をする際、前の画面から次の画面へデータを渡したい場合は、Intentというクラスを使います。Intent
は、画面間で簡単にデータをやり取りするために用意されたAndroidの仕組みです。
画面遷移の仕組みやIntent
を使った基本的な画面遷移の方法については、別の記事で詳しく解説していますので、まずはこちらの記事を参考にしてみてください!
\\Intent
を使った基本的な画面遷移の方法の解説はコチラ//
Androidの画面遷移でデータを受け渡す方法
画面遷移時にデータを受け渡すためには、IntentというAndroidの仕組みを使います。
Intentを使ったデータの送信と受信の概要
遷移元から遷移先にデータを送るために、putExtra
()メソッドを使用し、遷移先ではgetIntent
()メソッドを使って受け取ります。
送信側(遷移元)
- putExtra()メソッドでデータを追加する
- データはキーと値のペアでセットする
受信側(遷移先)
- getIntent()メソッドで遷移元の
Intent
を取得する - その後、
getStringExtra
()などのメソッドでデータを取り出す
具体的なコード例は次のセクションで説明します。
IntentのputExtra()メソッドとは?
putExtra
()メソッドは、遷移元から遷移先のActivityにデータを渡すために使われます。キーと値のペアとしてデータをセットし、画面遷移とともに送信します。
- キー:データを特定するための名前
- 値:実際に送信したいデータ
これにより、遷移先のActivityでそのデータをキーに基づいて取得することができます。
IntentのgetIntent()メソッドとは?
getIntent
()メソッドは、遷移先のActivityで、遷移元から送られてきたIntent
を取得するためのメソッドです。これを使って遷移元で渡されたデータを取得し、使用することができます。
- 画面遷移時のデータ受け取り:ユーザー情報や設定データを次の画面で使用したい場合に使います。
- 通知や外部リソースからのデータ受け取り:通知や他のアプリから送られてきたデータを処理する際にも使用します。
Intentから値を取り出すメソッド
遷移元でputExtra()
メソッドを使って渡したデータは、遷移先でデータ型に応じたメソッドを使って取得します。これには、以下のようなgetXXXExtra
()メソッドが用意されています。
(一例)
・getStringExtra()メソッド:文字列データを取得
・getIntExtra()メソッド:整数データを取得
・getBooleanExtra()メソッド:真偽値データを取得
渡すデータ型に応じて、適切なメソッドを使い分けることが重要です。
画面遷移時に値を渡す実装方法
画面遷移時に値を渡す実装方法について解説します!
前提として、遷移元のActivity(今回の場合:MainActivity
)と遷移先のActivity(今回の場合:SubActivity
)を用意していること
遷移元
1. Intentオブジェクトを作成
2. Intentに値を設定
3. startActivityメソッドで遷移を実行
遷移先
1. Intentオブジェクトを取得
2. キーを指定してIntentから値を取得
このステップを踏むことでで、遷移元から遷移先にデータを持っていくことができます。次に、具体的なコードを使ってその方法を解説します!
遷移元の処理
1.Intentオブジェクトを作成
まず、画面遷移を行うためにIntent
オブジェクトを作成します。
例:MainActivity.java
Intent intent = new Intent(MainActivity.this, SubActivity.class);
\\Intentの引数や詳しい解説はコチラ//
2.Intentに値を設定
次に、遷移先に渡すデータをputExtra
()メソッドでIntent
に追加します。ここで渡した値が、遷移先の画面で使用されます。
例:MainActivity.java
intent.putExtra("name", "なまえ");
引数 | クラス | 概要 |
第一引数 | String key | データに対応するキー(名前)を指定 このキーを使って、遷移先のActivityでデータを取得する |
第二引数 | DataType value | 渡したいデータを指定 様々なデータ型を渡すことが可能 |
対応するデータ型
Intentで渡せるデータは、さまざまな型に対応しています。使いたいデータの種類に応じて、適切なデータ型を選びましょう。
- 基本データ型
putExtra(String key, int value)
– 整数を渡すputExtra(String key, boolean value)
– 真偽値を渡すputExtra(String key, String value)
– 文字列を渡す
- 配列データ型
複数のデータを一度に渡したい場合は、配列を使ってデータをまとめて渡すputExtra(String key, int[] value)
– 整数配列putExtra(String key, String[] value)
– 文字列配列
- オブジェクトデータ型
複雑なデータを渡したい場合は、Parcelable
やSerializable
インターフェースを実装したオブジェクトも渡す
\\より詳しい内容は、公式のDevelopersリファレンスをご確認ください//
3.startActivityメソッドで遷移を実行
作成したIntent
をstartActivity()
メソッドで実行し、遷移先のActivityを起動します。
例:MainActivity.java
startActivity(intent);
遷移先の処理
次に遷移元で送ったデータを受け取る処理を遷移先で行います。
1.Intentオブジェクトを取得
遷移元から送られてきたデータは、Intent
オブジェクトに含まれています。
まず、getIntent
メソッドを使って、そのIntent
オブジェクトを取得します。
例:SubActivity.java
Intent intent=getIntent();
2.キーを指定してIntentから値を取得
getIntent
メソッドにて取得したIntent
から、遷移元でputExtra
メソッドを使って送られたデータを取り出します。ここで重要なのは、遷移元で設定したキーを使ってデータを取得することです。
例:SubActivity.java
String name=intent.getStringExtra("name");
データ型に応じたメソッド
putExtra
で渡されたデータ型に合わせて、getXXXExtra
メソッドを使ってデータを取得します。ここでは、代表的なメソッドを紹介します!
- 文字列を取得する:
getStringExtra("key")
- 整数を取得する:
getIntExtra("key", defaultValue)
- 真偽値を取得する:
getBooleanExtra("key", defaultValue)
Serializable
オブジェクトを取得する:getSerializableExtra("key")
Parcelable
オブジェクトを取得する:getParcelableExtra("key")
引数 | クラス | 概要 |
第一引数 | String key | データに対応するキー(名前)を指定 このキーを使って、遷移先のActivityでデータを取得する |
第二引数 (整数や真偽値の場合) | Class defaultValue | キーが見つからなかった場合に返すデフォルト値 データが見つからなかった際に安全に処理を続けるために役立つ |
これ以外にもさまざまなgetXXXExtra
メソッドが用意されています。用途に応じて使い分けましょう♪
\\より詳しい内容は、公式のDevelopersリファレンスをご確認ください//
すべての処理をまとめると…
ここまでの流れを簡単にまとめると、以下のコードで画面遷移時にデータの送受信が完了します。
例:MainActivity.java(遷移元)
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
//値を設定する
intent.putExtra("name","なまえ");
startActivity(intent);
例:SubActivity.java(遷移先)
//salesSiteId
Intent intent=getIntent();
String name = intent.getStringExtra("name");
これで、遷移元から遷移先へデータを渡し、遷移先で受け取る一連の処理が完了です♪
まとめ
今回は、Intentを使用して画面遷移時に値を渡して、遷移先で受け取る方法について解説しました!
思ったより簡単だったのではないでしょうか?これを使えば、データの受け渡しがスムーズに行えるので、ぜひ試してみてください♪
今回は少ない値を送る方法でしたが、複数の値をまとめて送るにはどうすればいいのでしょうか?
次の記事でその方法を詳しく解説していますので、ぜひチェックしてみてください!