LoginSignup
18
19

More than 5 years have passed since last update.

SINGLE_TOPで起動したAcitivityでgetIntentしてもセットした情報が取り出せない

Last updated at Posted at 2014-06-20

FLAG_ACTIVITY_SINGLE_TOPのフラグを付けてstartActivityで起動すると、スタック最上位でActivityを起動している場合は新しいインスタンスを作らないようにできますが、起動後のActivityでgetIntentしてintentの情報を取り出そうとしても、セットしたはずの情報が取り出せません。


A_Activity.java
@Override
protected void onResume() {
  Intent intent = getIntent();
  intent.getStringExtra(...);   // ②
}
B_Acitvity.java
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    Intent intent = new Intent(this, A_Activity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra(...);   // ①
    startActivity(intent);
    finish();
  }
}

※ A_Activity→B_Activity→A_Activity と呼び出されたとき、①でセットした値が②で取り出せない


この場合、onNewIntentメソッドを使えばセットした情報を取り出すことができます。
参考:Activity#onNewIntent

A_Acitivity.java
@Override
protected void onNewIntent(Intent intent) {
  intent.getStringExtra(...);   // セットした値が取り出せる
}

ActivityのlaunchModesingleTopsingleTasksingleInstanceを指定した場合も同様だそうです。

こちらの情報を参考にさせていただきました:http://into.cocolog-nifty.com/pulog/2011/12/android048onnew.html

18
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
19