navigateUpFromSameTask の挙動について
A, B, C のアクティビティがあります。
A は B の親、B は C の親になります。(AndroidManifest.xml に記述済み)
A -> B -> C のように遷移をした時に UP ボタンを押すと、B に遷移します。期待通りです。
しかし A -> C のように遷移をした時に UP ボタンを押すと、A に遷移してしまいます。
コードはAndroid のドキュメントと同じようにしています。
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
そこで、次のように、startActivity を利用する形に変更したら、期待通り B に遷移することが出来ました。
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = NavUtils.getParentActivityIntent(this);
startActivity(intent)
return true;
}
return super.onOptionsItemSelected(item);
}
navigateUpFromSameTask の挙動は「親のアクティビティに遷移する」だと思っていたのですが、そうでないケースがあるようです。
そこで質問なのですが、親のアクティビティに遷移したい場合、
- 上記の startAcitivity を利用した方法で問題がないか
- なぜ navigateUpFromSameTask が期待通りに動かないか
を知りたいです。