2011-11-08 38 views
7

Tôi đang phát triển ứng dụng với android: minSdkVersion = "11". Từ những gì tôi biết, ViewPager được triển khai trong Thư viện tương thích. Tôi có thành công để làm cho nó làm việc trong ứng dụng của tôi bằng cách thêm thư viện android-support-v4.jar, nhưng bây giờ tôi bắt buộc phải sử dụngSử dụng android.app.Fragment với ViewPager trong Android 3.0+

android.support.v4.app.FragmentActivity

vì Tôi cần getSupportFragmentManager() cho FragmentPagerAdapter, thay vì getFragmentManager của android.app.Activity().

Ngoài ra tôi cần phải sử dụng

android.support.v4.app.Fragment

thay vì

android.app.Fragment

Nó mặc dù vậy, tôi chắc chắn không thích cách tiếp cận này. Nó phá hủy thiết kế ứng dụng và tôi không muốn có Thư viện tương thích trong dự án API cấp 11 của tôi.

Có cách nào khác để sử dụng ViewPager trong ứng dụng Honeycomb + không?

+0

Câu trả lời được chấp nhận nên [thay đổi] (http://stackoverflow.com/a/16067755/1747491) ngay bây giờ khi 'v13' được phát hành. – theblang

Trả lời

13

Có thể không phải là trường hợp tại thời điểm câu trả lời được chấp nhận được nêu, nhưng có import android.support.v13.app.FragmentStatePagerAdapter; trong số sample code. Nếu bạn sử dụng thư viện hỗ trợ-v13, hàm tạo sẽ có phiên bản không hỗ trợ của FragmentManager. Lưu ý rằng ViewPager vẫn phải đến từ v4.

Tôi cũng sẽ thêm rằng v4 có nghĩa là thư viện hỗ trợ cho Android phiên bản 4+ (Donut 1.6) và v13 có nghĩa là thư viện hỗ trợ dành cho Android phiên bản 13+ (Honeycomb 3.2). Chỉ là một thực tế mà không phải là ngay lập tức rõ ràng với tôi ít nhất. Có nghĩa là các API được sử dụng trong v4/v13 tương thích với và các phiên bản quay lại điểm đó.

7

Sao chép FragmentPagerAdapter vào mã của bạn và sửa đổi để sử dụng android.app.Fragment, v.v. Hoặc tự mình thực hiện PagerAdapter của mình, nó không phụ thuộc vào phân đoạn nào cả.

+0

Bạn có nghĩa là tôi cũng có thể sử dụng mã ViewPager trong ứng dụng của mình sau khi sửa đổi nó? Tôi có thể lấy nguồn thư viện tương thích ở đâu? Đó có phải là cách duy nhất cho Honeycomb, không có gì bản địa hay phổ quát hơn? – morphium

+0

Tải xuống bao gồm nguồn. Nếu bạn đã cài đặt nó từ trình quản lý SDK, nó sẽ có giá $ SDK_ROOT/extras/android/compatibility/v4/src. Không biết bạn có ý nghĩa gì bởi 'bản địa hoặc phổ quát', nhưng 'ViewPager' không phải là một phần của Android SDK, bạn phải thêm nó vào dự án của bạn để sử dụng nó, hoặc trong thư viện (jar) hoặc dạng nguồn. –

+0

Tôi đã sao chép FragmentPagerAdapter và làm cho nó hoạt động với android.app.Fragment. Nhưng cách tiếp cận này vẫn giả định rằng tôi phải sử dụng thư viện android-support-v4.jar. Đó là cách tiếp cận bình thường ở tất cả? – morphium

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