2012-11-17 29 views
6

Có thể sử dụng một đoạn trong một khung nhìn nhiều lần không? Tôi đang cố gắng xây dựng một giao diện người dùng được cập nhật động bằng cách sử dụng ViewPager. Tôi muốn sử dụng cùng một thiết kế, về cơ bản cùng một đoạn với các dữ liệu khác nhau cho mỗi trang, như một bộ điều hợp listview.Sử dụng một Fragment trong ViewPager nhiều lần

+1

AFAIK, điều này sẽ không hoạt động. Bạn có thể sử dụng một 'GestureDetector' để xem cho swipes trên mảnh hiện có của bạn. – CommonsWare

+0

BTW, để làm rõ, tôi giả định rằng bạn có nghĩa là bạn muốn sử dụng một mảnh * dụ * - nếu bạn có nghĩa là bạn muốn chỉ sử dụng một mảnh * lớp *, đó là hoàn toàn tốt đẹp. – CommonsWare

Trả lời

4

Bạn có thể khởi tạo cùng một lớp Phân đoạn cho mỗi trang trong ViewPager của mình, chuyển vị trí của ViewPager để kiểm soát nội dung hiển thị. Một cái gì đó như thế:

public class MyFragment extends Fragment { 

    private int mIndex; 

    public MyFragment(int index) { 
     mIndex = index; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 

     switch(mIndex){ 
      case 0: 
      // do you things.. 
      case 1: 
      // etcetera 
     }    
    } 
} 

sau đó, trong bạn FragmentPagerAdapter:

public static class MyAdapter extends FragmentPagerAdapter { 
    public MyAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public int getCount() { 
     return NUM_ITEMS; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return new MyFragment(position); 
    } 
} 

Bằng cách đó bạn có thể tái sử dụng hầu hết các mã của bạn chỉ thay đổi những gì bạn cần trong câu lệnh switch/trường hợp.

+0

nhưng bạn không thể tạo một hàm tạo không rỗng của lớp phân đoạn –

3

Bạn hiểu sai khái niệm về class so với object of class. mã nguồn MyFragment.java của bạn xác định class mà bạn biến thành "vật sống" mỗi khi bạn nhanh chóng nó với new điều hành (new MyFragment();) - điều này tạo ra object mà là một instance của class của bạn. Trừ khi bạn cố ý ngăn chặn điều này (bằng cách sử dụng mẫu Singleton), bạn có thể tạo số lượng instances của số class tùy ý, giống như cách bạn được phép tạo bao nhiêu tức là bánh bằng công thức đơn. Và điều này cũng áp dụng cho các mảnh vỡ.

Vì vậy, miễn là bạn tạo riêngobject (aka nói instance) của class của bạn cho mỗi trang, bạn sẽ có thể làm những gì bạn muốn.

+0

bạn có thể cung cấp một số mẫu cho lời giải thích ở trên không ..? – Harsha

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