0

アップボタンに次の動作を実装したいと思います。

  • 親アクティビティのインスタンスがバック スタックにある場合は、その親アクティビティの最上位のインスタンスに戻ります。
  • バック スタックに親アクティビティのインスタンスがない場合は、新しいインスタンスを作成します。

実際、up と back の違いについて最初に読んだとき、この動作はデフォルトとして期待していたものでした。ただし、NavUtils.navigateUpFromSameTask(this);バックスタックにすぐに利用できるインスタンスがあるという事実を無視して、常に親アクティビティの新しいインスタンスを作成することがわかりました。

アドバイスをありがとう。

4

2 に答える 2

1

マニフェスト android:launchMode="singleInstance" または android:launchMode="singleTop" でアクティビティの起動モードを指定してみてください。詳細については、この質問を参照してくださいAndroid launchmode="singleTask" が期待どおりに機能しない

于 2013-01-17T11:55:17.603 に答える
0

親アクティビティのインスタンスがバック スタックにある場合は、その親アクティビティの最上位のインスタンスに戻ります。

これがバックスタックをこの最上位のインスタンスまでクリアすることを意図している場合、私は最近、アクティビティを使用してアップナビゲーションをカスタマイズし、 -flag ( link ) を- にonOptionsItemSelected()追加することでこの問題を解決しましたが、起動モードの切り替えだけでは終了しませんでした私が期待していたバックスタックで:FLAG_ACTIVITY_CLEAR_TOPIntent

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    Intent parentActivityIntent = NavUtils.getParentActivityIntent(this);
    parentActivityIntent.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(parentActivityIntent);
}

http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUpもご覧ください。

于 2014-01-27T16:57:07.377 に答える