私はこの実際のナビゲーションツリーを持っています:
A => B => C
構成 B によると、スキップすることができ、ナビゲーションは次のようになります。
A => C
いずれにせよ、B は C の親のままです。
したがって、(B を介してかどうかに関係なく) C に移動すると、アクション バーの上ボタンをタッチすると B に到達することが期待されます。
私のマニフェストは次のように定義されています:
<activity android:name="my.package.A"></activity>
<activity android:name="my.package.B"></activity>
<activity android:name="my.package.C"
android:parentActivityName="my.package.B">
</activity>
私のアプリは Android 4.1 以降を対象としているため、<meta data>
タグは必要ありません
C アクティビティは次のように設定されます。
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_int);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
したがって、ドキュメントによると、 「アップ」すると、Bアクティビティが作成されるか、元に戻されます。
問題 :
B をスキップする (A から C に移動する) 場合、「アップ」するとアプリケーションが閉じます (A が終了したため、予想される動作) が、B を作成する必要があります。
onOptionsItemSelected()
shouldUpRecreateTask()
B が存在しなくても常に false を返します。
B を介して C に移動すると (A=>B=>C)、上ボタンで正しく B に戻ります。
私は何を間違っていますか?
ありがとう。