アクティビティから別のアクティビティを呼びだすと、新しいアクティビティは上に重ねられた状態になり、今まで使用していたアクティビティは停止します。
そして新しいアクティビティが終了すると、元のアクティビティが動作し始めます。
呼び出し方には2種類あって、単純に呼び出す方法と、新しいアクティビティが終了すると結果を受信する方法があります。
どちらの呼び出しでもintentを使用し、intentに文字列等を設定して渡してやることができます。
アクティビティ間でオブジェクトを渡す場合にはserializeが必用なので注意が必要ですがここではふれません。
intentには明示的インテントと暗黙的インテントがありますが、同じアプリ内で特定のアクティビティから特定のアクティビティを呼び出す場合には明示的インテントになります。
暗黙的インテントではURIを指定して、合致するURIを持つアプリが起動されるか、複数ある場合はどれを起動するか選択できますが、ここではふれまん。
新しく自作でアクティビティを作成することになるので、AndroidManifest.xmlに登録する必要があります。
単純な呼び出し
呼びだし元ではstartActivity()を使い新しいアクティビティを起動します。。新しいアクティビティはfinish()で終了し、元のアクティビティに戻ります。
//呼び出し元 class btnClickListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(Activity.this,Activity2.class); intent.putExtra(";MESSAGE";, ";値";); startActivity(intent); } }
//新しいアクティビティ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); Intent data = getIntent(); Bundle extras = getExtras(); String msg = extras.getString(";MESSAGE";); ・・・ } class btnClickListener implements OnClickListener{ public void onClick(View v) { finish(); } }
<!-- AndroidManifest.xml --> <activity android:name=";Activity2"; />
結果を受信する呼び出し
新しいアクティビティが終了する際にsetResultで値を設定し、その値を元のアクティビティではonActibityResultメソッドで受信します。
//呼び出し元 private static final int ACT_CALL_OK = 0; class btnClickListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(Activity.this,Activity2.class); intent.putExtra(";MESSAGE";, ";値";); startActivityForResult(intent,ACT_CALL_OK); } } @Override public void onActivityResult(int requestCode,int resultCode,Intent data){ if(requestCode==ACT_CALL_OK && resultCode==RESULT_OK){ Bundle extra = data.getExtras(); String msg = extra.getString(";MODORI";); } }
//新しいアクティビティ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); Intent data = getIntent(); Bundle extras = getExtras(); String msg = extras.getString(";MESSAGE";); ・・・ } class btnClickListener implements OnClickListener{ public void onClick(View v) { Intent intent = getIntent(); intent.putExtra(";MODORI";, ";戻す値";); setResult(RESULT_OK, intent); finish(); } }
<!-- AndroidManifest.xml --> <activity android:name=";Activity2"; />