17
Android 4.2:ネストされたフラグメントによるバックスタックの動作
Android 4.2では、サポートライブラリがネストされたフラグメントのサポートを取得しました。こちらをご覧ください。私はそれをいじってみましたが、バックスタックとgetChildFragmentManager()に関する興味深い動作/バグを見つけました。getChildFragmentManager()およびaddToBackStack(String name)を使用する場合、戻るボタンを押すと、システムはバックスタックを前のフラグメントまで実行しません。一方、getFragmentManager()を使用する場合およびaddToBackStack(String name)、戻るボタンを押すと、システムは前のフラグメントに戻ります。 私にとって、この動作は予想外です。デバイスの[戻る]ボタンを押すと、フラグメントが子のフラグメントマネージャーでバックスタックに追加された場合でも、最後に追加されたフラグメントがポップされます。 この動作は正しいですか?この動作はバグですか?この問題の回避策はありますか? getChildFragmentManager()のサンプルコード: public class FragmentceptionActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); final FrameLayout wrapper1 = new FrameLayout(this); wrapper1.setLayoutParams(new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); wrapper1.setId(1); final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); params.topMargin = 0; final TextView text = new TextView(this); text.setLayoutParams(params); text.setText("fragment …