¿Cómo puedo mantener el estado del fragmento cuando se agrega a la pila posterior?

He escrito una actividad ficticia que cambia entre dos fragmentos. Cuando pasas de FragmentA a FragmentB, FragmentA se agrega a la pila trasera. Sin embargo, cuando vuelvo a FragmentA (presionando Atrás), se crea un FragmentA totalmente nuevo y se pierde el estado en el que estaba. Tengo la sensación de que estoy buscando lo mismo queesta pregunta, pero he incluido un ejemplo de código completo para ayudar a erradicar el problema:

public class FooActivity extends Activity {
  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(android.R.id.content, new FragmentA());
    transaction.commit();
  }

  public void nextFragment() {
    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(android.R.id.content, new FragmentB());
    transaction.addToBackStack(null);
    transaction.commit();
  }

  public static class FragmentA extends Fragment {
    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
      final View main = inflater.inflate(R.layout.main, container, false);
      main.findViewById(R.id.next_fragment_button).setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
          ((FooActivity) getActivity()).nextFragment();
        }
      });
      return main;
    }

    @Override public void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      // Save some state!
    }
  }

  public static class FragmentB extends Fragment {
    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
      return inflater.inflate(R.layout.b, container, false);
    }
  }
}

Con algunos mensajes de registro añadidos:

07-05 14:28:59.722 D/OMG     ( 1260): FooActivity.onCreate
07-05 14:28:59.742 D/OMG     ( 1260): FragmentA.onCreateView
07-05 14:28:59.742 D/OMG     ( 1260): FooActivity.onResume
<Tap Button on FragmentA>
07-05 14:29:12.842 D/OMG     ( 1260): FooActivity.nextFragment
07-05 14:29:12.852 D/OMG     ( 1260): FragmentB.onCreateView
<Tap 'Back'>
07-05 14:29:16.792 D/OMG     ( 1260): FragmentA.onCreateView

Nunca llama a FragmentA.onSaveInstanceState y crea un FragmentA nuevo cuando devuelves el golpe. Sin embargo, si estoy en FragmentA y bloqueo la pantalla, se llama a FragmentA.onSaveInstanceState. Qué raro ... ¿me equivoco al esperar que un fragmento agregado a la pila de atrás no necesite una recreación? Esto es lo quedocs decir:

Mientras que, si llama addToBackStack () al eliminar un fragmento, entonces el fragmento se detiene y se reanudará si el usuario navega hacia atrás.

Respuestas a la pregunta(12)

Su respuesta a la pregunta