we fragmencie, nazywa się w zakresie działalności Mam wyświetlania listy linii autobusowych tak:Zmiana ActionBar przy użyciu fragmentów
Wtedy, gdy użytkownik kliknie na „stacje”, lubię aby wyświetlić listę stacji oczywiście. Używam tego kodu:
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();
}
}
XML dla tego działania jest:
<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 jest prosty ListFragment wyświetlane na drugim:
To, co działa dobrze, to pasek akcji, teraz poprawnie zawiera tytuł tylko.
To, co nie działa, jeśli teraz naciśnij z powrotem. listy stacji jest ukryta, ale stary ActionBar nie zostanie przywrócona:
Dokumenty mówią, że sposób, aby dodać ActionBar korzysta onCreateOptionsMenu metody itd
Więc w LongDistanceFragment (pierwszy pokazano), tworzę pasek tak:
@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);
}
Ale jakoś nie zostanie przywrócona, gdy użytkownik jest z powrotem w tym fragmentem.
Myślę, że potrzebny jest sposób na odzyskanie stanu paska akcji podczas wycofywania transakcji fragmentu.
Czego mi brakuje? Dzięki za pomoc.
Walczę też z tym w tej chwili. Oto pokrewne pytanie. http://stackoverflow.com/questions/6503189/fragments-onresume-from-back-stack –