2012-04-13 29 views

Trả lời

34

LƯU Ý: Đây là một đoạn trích từ Android Training lớp Implementing Effective Navigation.


Để thực hiện điều này (trong Android 3.0 hoặc cao hơn), bạn có thể sử dụng một ViewPager kết hợp với API ActionBar tab.

Khi quan sát trang hiện tại đang thay đổi, hãy chọn tab tương ứng. Bạn có thể thiết lập hành vi này sử dụng một ViewPager.OnPageChangeListener trong phương pháp của hoạt động của bạn onCreate():

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    mViewPager.setOnPageChangeListener(
      new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        // When swiping between pages, select the 
        // corresponding tab. 
        getActionBar().setSelectedNavigationItem(position); 
       } 
      }); 
    ... 
} 

Và khi lựa chọn một tab, chuyển sang trang tương ứng trong ViewPager. Để làm điều này, thêm một ActionBar.TabListener đến tab của bạn khi tạo nó bằng cách sử dụng phương pháp newTab():

actionBar.newTab() 
     ... 
     .setTabListener(new ActionBar.TabListener() { 
      public void onTabSelected(ActionBar.Tab tab, 
        FragmentTransaction ft) { 
       // When the tab is selected, switch to the 
       // corresponding page in the ViewPager. 
       mViewPager.setCurrentItem(tab.getPosition()); 
      } 
      ... 
     })); 
+1

Hi Roman, Vui lòng làm ví dụ triển khai bộ điều hợp kiến ​​để triển khai vuốt bố cục nhiều ngăn chứa nhiều đoạn được tạo động/có thể thay thế. Thách thức: - Trình quản lý phân đoạn sử dụng ID tài nguyên để thêm Phân đoạn; ID phải là duy nhất trên các trang (bạn không thể chỉ định cá thể ViewGroup làm vùng chứa) - Chế độ xem vùng chứa phải tồn tại trước khi FragmentManager cố khôi phục các đoạn - Các phiên bản được giữ lại và lỗi thay đổi hướng # 1: NullPointerException xung quanh khi FragmentManager cố gắng lưu Trạng thái phân mảnh; # 2: NullPointerException xung quanh LoaderInfo.onLoadComplete – user289463

+1

Bạn nên đặt câu hỏi này như một câu hỏi mới. –

+0

Những điều kỳ lạ xảy ra nếu bạn thêm biểu tượng menu vào thanh tác vụ và sử dụng ViewPager theo cách đó ... – Maxim

12

Nếu bạn đang nhắm mục tiêu các API dưới Android 3.0, bạn không thể sử dụng giải pháp của Roman trên.

Tôi đã viết một blog post here về cách thực hiện điều tương tự với ActionBarSherlock nếu có ai quan tâm.

+0

Có thể sử dụng giải pháp cho các phiên bản cũ hơn nếu bạn thêm thư viện hỗ trợ khả năng tương thích android http://developer.android.com/tools/extras/support-library.html. Với plugin Eclipse ADT mới nhất, nó dễ dàng như việc kích chuột phải vào dự án và chọn 'Android Tools'>' Add Support Library'. Dự án sẽ phải được xây dựng dựa trên API 14 trở lên (ví dụ: Android 4+) trong khi sử dụng tệp kê khai với ví dụ: '' để chạy trên Android 2.1. – ccpizza

+1

@ JesperB-Điều gì xảy ra nếu tôi cần triển khai Vuốt giữa các tab trong TabHost của tôi cho các API nhắm mục tiêu ứng dụng Android bên dưới Android 2.3.3 và không sử dụng ActionBarSherlock .. ?? Bạn có thể gợi ý cho tôi điều gì đó cho điều đó không .. ?? –

+1

@ JesperB-Trên thực tế tôi đã làm cho các ứng dụng với tabview làm việc hoàn toàn tốt ... Tôi chỉ cần cập nhật các tính năng của Swipe !! –

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