Trong một Fragment, được gọi trong một hoạt động Tôi đang hiển thị một danh sách các tuyến xe buýt như thế này:Thay đổi ActionBar khi sử dụng mảnh
Sau đó, khi người dùng nhấp vào "trạm", tôi thích để hiển thị danh sách các trạm tất nhiên. Tôi đang sử dụng mã này:
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 cho hoạt động này là:
<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 là một đơn giản ListFragment hiển thị trên đầu trang của người kia:
Điều gì hoạt động tốt mặc dù là ActionBar, nó bây giờ đúng cách chứa Tiêu đề chỉ có.
Điều gì không hiệu quả nếu tôi nhấn quay lại ngay bây giờ. danh sách Trạm là ẩn, nhưng ActionBar cũ không được khôi phục:
Các tài liệu đang nói rằng cách để thêm ActionBar đang sử dụng onCreateOptionsMenu phương pháp, vv
Vì vậy, trong LongDistanceFragment (cái đầu tiên được hiển thị), tôi đang tạo thanh như sau:
@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);
}
Nhưng bằng cách nào đó, nó sẽ không được khôi phục khi người dùng quay trở lại đoạn đó.
Tôi nghĩ rằng cách khôi phục trạng thái của ActionBar khi quay trở lại Giao dịch phân đoạn là cần thiết.
Tôi đang thiếu gì? Cảm ơn vì bất kì sự giúp đỡ.
Tôi đang chiến đấu với điều này tại thời điểm này. Đây là một câu hỏi liên quan. http://stackoverflow.com/questions/6503189/fragments-onresume-from-back-stack –