3

アプリには、親と一致するフレームレイアウト コンテナーを持つフラグメント アクティビティがあります。ユーザーはフラグメント ui とやり取りし、互いに置き換えて、次のように古いものをバックスタックに入れます: A -> B -> C -> D -> E -> F

たとえば、フラグメント D でユーザーが電話の向きを変更し、フラグメント E に移動したい場合、フラグメント A のビューが表示され、ユーザーがこのフラグメント A (通常はフラグメント B に移動) で何かを押すと、フラグメント F のビューが表示されます。示します。

画面の向きを変更した後、AではなくフラグメントEを表示する方法は?

アプリは最新の Android サポート ライブラリを使用しており、これは Android 4.1 エミュレーターと Android 2.3 電話で発生します (他の Android バージョンはテストされていません)。

すべてのフラグメントには、この go next fragment メソッドがあります。

public final void showNextFragment(final Fragment frg, final String tag) {
    final FragmentTransaction tr = getFragmentManager().beginTransaction();
    tr.remove(this);
    tr.add(R.id.fragment_container, frg, tag);
    tr.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    tr.addToBackStack(tag);
    tr.commit();
}

編集

フラグメント D で画面を回転すると、すべての回転が正常に行われ、フラグメント D のビューが表示されます。ユーザーが上記の方法を使用してフラグメント E に移動すると、回転後にフラグメント A のビューが E ではなく表示されるという問題があります。ユーザーが電話フラグメント E を回転しない場合、フラグメント E が表示されます通常は。

4

1 に答える 1

-1

1 つの解決策は、現在のタグまたはフラグメントを静的変数として保持することです。

そうでなければ、画面の向きで A に戻りますか? そうでない場合は、マニフェストにこれを追加する必要があります。

<activity android:configChanges="keyboardHidden|orientation" ...
于 2012-10-19T12:43:21.147 に答える