読者です 読者をやめる 読者になる 読者になる

【Android】Intent(Activity間)

 

Intent(Activity間)

 

▼MainActivityからSubActivityへの移動の例です。

------------------------------------------------------------------------------------

AndroidManifest.xml
<activity
  android:name=".SubActivity"
  android:label="@string/app_name">
</activity>

 

※SubActivityの追加

------------------------------------------------------------------------------------

MainActivity.java

<遷移元>
Intent intent = new Intent(this, SubActivity.class);
intent.putExtra("key", "MainActivityからきたよ");
startActivity(intent);

 

SubActivityの呼び出し

------------------------------------------------------------------------------------

SubActivity.java

<遷移先>
Intent intent = getIntent();
String key = intent.getStringExtra("key");

 

※SubActivityが起動します。必要であれば遷移元からの連携の内容を取得。

------------------------------------------------------------------------------------

 

▼遷移先のアクティビティから結果を送り返してもらう

MainActivity.java

<遷移元>
Intent intent = new Intent(this, SubActivity.class);
int requestCode = 1; ※条件分岐のための数値(なんでもよい)
startActivityForResult(intent, requestCode);

 

▼SubActivityから返却してきた場合のコールバックメソッド

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  Bundle bundle = data.getExtras();
  switch (requestCode) {
  case 1:
    if (resultCode == RESULT_OK) {
      String msg = bundle.getString("MSG");
      int num = bundle.getInt("NUM");
    } else if (resultCode == RESULT_CANCELED) {
      ~
    }
    break;
  default:
    break;
  }
}

------------------------------------------------------------------------------------

SubActivity.java

<遷移先>
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("MSG", "東京");
bundle.putInt("NUM", 123);
intent.putExtras(bundle);
setResult(RESULT_OK, intent);      ※成功を返却する場合
setResult(RESULT_CANCELED, intent);  ※失敗を返却する場合
finish(); ※終わらせてIntent dataを遷移元へ送る