Androidアプリで、Activityから別のActivityを起動させる場合に、情報や値を受け渡す方法は?
以前、Androidアプリで別のアクティビティを起動させる方法を紹介しました。
Androidアプリで別のアクティビティを起動させる方法
ただ起動させるだけでなく、起動させる側から、何らかの情報を渡したい、引き継ぎたい、という場合もあるでしょう。
今回は、その方法をご紹介します。
IntentクラスのputExtra()メソッドを使用します。
同じアプリ内の、xxxxというActivityを起動させ、例として、検索ワードと、or検索かand検索かのフラグを渡す、という場合は以下のようになります。
i = new Intent(getApplicationContext(),xxxx.class);
i.putExtra(“KEYWORD”, keywordStr);
i.putExtra(“AND”, andRadio.isChecked());
startActivity(i);
putExtraの第一引数は、キー名です。
第二引数が、渡したい値です。
startActivity()で起動させる場合も、startActivityForResult()で起動させる場合も同じように使えます。
呼び出されたActivity側では、以下のようにして受け取ります。
Intent i = getIntent();
String keyword = i.getStringExtra(“KEYWORD”);
boolean isAnd = i.getBooleanExtra(“AND”, true);
まず、getIntent()でIntent型インスタンスを取得します。
このgetIntent()は、自身の起動に使われたIntentを取得する、という意味合いです。
設定する側は、一律putExtra()で値を設定しましたが、受け取り側では、格納されている値の型によりメソッドが分かれます。
スポンサーリンク
String型:getStringExtra()
もし対応するキーが存在しないときは、戻り値はnullになります。
boolean型:getBooleanExtra()
もし対応するキーが存在しないときは、戻り値は第二引数で設定した値になります。
上記の例ではtrueですね。
int型:getIntExtra()
もし対応するキーが存在しないときは、戻り値は第二引数で設定した値になります。
とりあえず私が個人的に良く使う3種類を紹介しましたが、他にもたくさんあります。
紹介しきれないので、APIリファレンスをご覧ください。
ちなみに、配列も渡せます。
startActivityForResult()で起動されたActivityから、起動元のActivityへ戻るときも、これと同じように値を渡す事ができます。
以下のようにします。
i = new Intent();
i.putExtra(“ID”,id);
i.putExtra(“NAME”, name);
setResult(RESULT_OK, i);
finish();
今回はここまでです。
putExtraで画像のuriを指定して、アクティビティ起動
↓
起動したアクティビティで受け取る
という処理をしたいのですが、どうすればいいですか?