画面にパラメータを渡す方法
項目 | 内容 | putExtra | 画面にパラメータを渡すメソッドです。 | getExtras | 画面から受け取ったパラメータを取得するメソッドです。 |
メイン画面とサブ画面を使用してパラメータを渡すサンプルとなります。
ボタンをタップしたタイミングでパラメータを渡しています。
//インテントで画面を開くための準備をします。
Intent intent = new Intent(MainActivity.this, SubActivity.class);
数字を渡す準備をしています。
intent.putExtra("intData", 100);
文字列を渡す準備をしています。
intent.putExtra("strData", "てすと");
//次の画面を開きます。
第2引数は「requestCode」です。
次の画面から戻ってきたときに、この設定した値を使った処理ができます。
startActivityForResult(intent, 1);
※このケースでは「onActivityResult」の第1引数には、「startActivityForResult」の第2引数の「1」が渡されます。
すわなち、第1引数は、呼び元の画面→次の画面→呼び元の画面に戻る処理で呼び元が指定した「1」が決め手になります。
また第2引数の「requestCode」は次の画面で設定した「setResult」メソッドの第1引数です。
「startActivityForResult」を使用した場合の処理
前の画面が閉じられ、この画面が再表示される場合に呼ばれます。
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
次の実装をすることで、リクエストコード、結果コード、インテントのデータを取得できます。
super.onActivityResult(requestCode, resultCode, intent);
インテントは次のように取得できます。
Bundle extras = intent.getExtras();
(数字の例)
extras.getInt("intData")
(文字列の例)
extras.getString("strData")
※getIntやgetStringなどに設定する引数は前の画面のコード内で設定したキーです。
メイン画面から渡された値を取得する方法
インテントを宣言します。
(例)
Intent intent = getIntent();
インテントは次のように取得できます。
(例)
Bundle extras = intent.getExtras();
バンドルがnullかどうか?を判定します。
(例)
if (extras != null){
//数字を取得します。
Log.d("intData", String.valueOf(extras.getInt("intData")));
//文字列を取得します。
Log.d("strData", extras.getString("strData"));
}else{
//nullのケース
Log.d("画面から渡された値", "null");
}
このサンプルでは、ボタンはOKとキャンセルの2種類を用意しています。
OKには次の設定をしています。
数字と文字列の値を設定
結果コードに「RESULT_OK」を設定します。
画面を閉じてメイン画面を再表示します。
キャンセルには次の設定をしています。
結果コードに「RESULT_CANCELED」を設定します。
画面を閉じてメイン画面を再表示します。
実行結果
メイン画面からサブ画面を開くため「次の画面」ボタンをタップします。
サブ画面を実行する際、インテントの情報を表示した結果です。
/* ----------------------------------------------------------
(出力例)
10-04 06:45:44.580 24472-24472/com.example.test.test7 D/intData: 100
10-04 06:45:44.580 24472-24472/com.example.test.test7 D/strData: てすと
----------------------------------------------------------- */
サブ画面の「OK」ボタンをタップします。
メイン画面で次の結果が表示されます。
/* ----------------------------------------------------------
(出力例)
10-04 06:47:07.400 24472-24472/com.example.test.test7 D/requestCode: 1
10-04 06:47:07.400 24472-24472/com.example.test.test7 D/resultCode: -1
10-04 06:47:07.400 24472-24472/com.example.test.test7 D/intData: 1
10-04 06:47:07.400 24472-24472/com.example.test.test7 D/strData: OK
----------------------------------------------------------- */
サブ画面の「キャンセル」ボタンをタップします。
メイン画面で次の結果が表示されます。
/* ----------------------------------------------------------
(出力例)
10-04 06:47:30.080 24472-24472/com.example.test.test7 D/requestCode: 1
10-04 06:47:30.080 24472-24472/com.example.test.test7 D/resultCode: 0
10-04 06:47:30.080 24472-24472/com.example.test.test7 D/画面から渡された値: 0
----------------------------------------------------------- */
|
|