2012-02-07 37 views
9

Tôi đang tạo ứng dụng có ActionBar và hai Tab bên dưới. Mọi thứ hoạt động tốt nếu thiết bị/trình giả lập không được xoay. Nếu được xoay, trạng thái tab sẽ tự động chuyển sang tab1 (bình thường, bởi vì onCreate được gọi) nhưng nội dung không được thay đổi. Nếu tôi chọn một tab theo hướng mới, phương thức onCreateView() từ số đã chọn Fragment sẽ được gọi nhưng chế độ xem không được cập nhật (luôn giữ nguyên). Lời khuyên nào?ActionBar Tab với các đoạn trên xoay

Mã.

Hoạt động chính:

ActionBar actionbar = getActionBar(); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player); 
    ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations); 

    Fragment AFragment = new AFragment(); 
    Fragment BFragment = new BFragment(); 

    PlayerTab.setTabListener(new MyTabsListener(AFragment)); 
    StationsTab.setTabListener(new MyTabsListener(BFragment)); 

    actionbar.addTab(ATab); 
    actionbar.addTab(BTab); 

Với tab giống hệt nhau mà hiển thị một TextView đơn giản. Textview đơn giản nói tab nào được chọn.

Những mảnh vỡ:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.a, container, false); 
} 

Cách bố trí Fragment, đã đề cập ở trên, chỉ chứa một TextView với các dòng chữ cứng. (Chỉ dành cho mục đích thử nghiệm)


Bố cục chính trông như thế này.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 


    <LinearLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
</LinearLayout> 

</LinearLayout> 
+0

Bạn có muốn onCreate() được gọi khi xoay thiết bị? – nhaarman

+0

Có và Không, trong ví dụ này là ok. Trong ứng dụng cuối cùng, cũng Ok, nhưng tôi nghĩ rằng không phải là cách tốt nhất. Bạn có muốn sử dụng 'android: configChanges =" keyboardHidden | orientation "'? Tôi đọc về nó và bất cứ ai nói điều gì đó về rò rỉ bộ nhớ và phương sách cuối cùng. Có đúng không? Có cách nào tốt hơn? – Leandros

Trả lời

19

Đã giải quyết. Tôi đã tái tạo từng mảnh, không làm điều đó nữa giải quyết nó.

Thay đổi trong TabListener tôi và onTabSelected(Tab tab, FragmentTransaction ft), ft.add()-ft.replace()

+2

Lỗi này cũng nằm trong tài liệu chính thức của Android: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs Có thể ai đó cũng có thể khắc phục lỗi đó. – StefanMK

Các vấn đề liên quan