En un fragmento, denominado dentro de una actividad que estoy mostrando una lista de líneas de autobús así:Cambio de la Barra de acciones cuando se utilizan fragmentos
Entonces, una vez que el usuario hace clic en "estaciones", que me gustan para mostrar una lista de estaciones, por supuesto. Estoy usando este código:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_long_distance);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.f_long_distance, new LongDistanceFragment()).commit();
}
@SuppressWarnings({"UnusedDeclaration"})
public void showStationList(View view) {
String tag = (String) view.getTag();
if (tag != null && tag.length() > 0) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
StationListFragment fragment = new StationListFragment(tag.split(","));
ft.add(R.id.f_long_distance, fragment);
// ft.replace(R.id.f_long_distance, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
}
}
El XML para esta actividad es:
<LinearLayout
android:id="@+id/ll_container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/f_long_distance"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
StationListFragment es un simple ListFragment que aparece en la parte superior de la otra:
Lo que funciona bien es la barra de acciones, ahora contiene correctamente el título solamente.
Lo que no funciona es si presiono ahora. la lista de estaciones está oculto, pero el viejo no se restaura la Barra de acciones:
Los documentos están diciendo que la forma de añadir la Barra de acciones está utilizando métodos onCreateOptionsMenu etc.
Así, en LongDistanceFragment (la primera se muestra una), estoy creando la barra de la siguiente manera:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Log.d(TAG, "onViewCreated");
super.onViewCreated(view, savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
ActionBar bar = getSupportActivity().getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
bar.setListNavigationCallbacks(new SimpleSpinnerArrayAdapter(getActivity()), this);
}
Pero de alguna manera no se restablece una vez que el usuario está de vuelta en ese fragmento.
Creo que es necesario recuperar el estado de la barra de acciones al revertir la transacción de fragmentos.
¿Qué me estoy perdiendo? Gracias por cualquier ayuda.
Estoy batallando con esto en este momento también. Aquí hay una pregunta relacionada. http://stackoverflow.com/questions/6503189/fragments-onresume-from-back-stack –