250

プログラムでフラグメントが追加されたアクティビティがあるとします。

private void animateToFragment(Fragment newFragment, String tag) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, newFragment, tag);
    ft.addToBackStack(null);
    ft.commit();
}

表示されていた前のフラグメントに戻る最良の方法は何ですか?

Androidのボタンクリックでトリガーバックボタン機能を見つけましたが、バックキーイベントをシミュレートすることは正しい方法ではないと考えています(また、動作させることもできません):

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));

呼び出しfinish()は、興味のないアクティビティを閉じるだけです。

これについてもっと良い方法はありますか?

4

14 に答える 14

392

方法を見てくださいgetFragmentManager().popBackStack()(選択できるものがいくつかあります)

http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()

于 2012-06-02T15:49:30.273 に答える
37

フラグメントを更新/追加するとき、

を含める必要があります.addToBackStack()

getSupportFragmentManager().beginTransaction()
    .add(detailFragment, "detail") // Add this transaction to the back stack (name is an optional name for this back stack state, or null).
    .addToBackStack(null)
    .commit();

その後getFragments.popBackStackImmediate()、フラグメントを追加/更新すると true が返され、現在の画面に戻ります。

于 2013-07-13T10:52:31.760 に答える