2012-10-25 26 views
12

Tôi đi qua các ViewPager và liên quan FragmentPagerAdaptor mà không phải là một phần của gói Android thông thường, nhưng chỉ có sẵn trong gói hỗ trợ V4. Có vẻ như tôi không thể sử dụng FragmentPagerAdaptor với android.app.Fragment vì FragmentPagerAdaptor yêu cầu v4 FragmentManager để khởi tạo. Đọc Difference between Activity and FragmentActivity điều này dường như được căn chỉnh - sử dụng v4 mảnh vỡ và các lớp liên quan hoặc android.app.Fragments thông thường. Không bao giờ trộn.Luôn sử dụng v4 Fragments thay vì android.app.Fragment tích hợp sẵn?

Thực hiện thêm, tôi thấy không cần sử dụng android.app.Fragments thông thường vì chúng ít mạnh mẽ hơn gói hỗ trợ v4. (Trích dẫn từ một câu hỏi khác: The Android Support package is not only for backports of newer APIs. It is also for other classes that, for whatever reason, are not being added to the SDK, such as ViewPager and its supporting classes.). Nhược điểm "duy nhất" tôi có thể nghĩ là các thư viện hỗ trợ v4 đi kèm với APK có nghĩa là ứng dụng của tôi sẽ chiếm nhiều không gian hơn.

Tôi có đúng để kết luận rằng tôi nên luôn sử dụng thư viện hỗ trợ v4 cho các đoạn vì các thư viện đó có thêm chức năng không? (Và chúng tương thích ngược, không được quên.)

Trả lời

9

Tôi chỉ nhận ra rằng nó có thể sử dụng android.app.Fragmentandroid.support.v4.view.ViewPager cùng .. Nếu bạn sử dụng android.support.v13.app.FragmentPagerAdapter. .. Vì vậy, có vẻ như gói hỗ trợ v13 giải quyết/cải thiện các vấn đề tương thích giữa android.app.Fragment và android.support.v4.view.ViewPager. Thật là một mớ hỗn độn.

Trong khi điều này giải quyết một ví dụ cụ thể, tôi vẫn tự hỏi liệu tùy chọn tốt nhất là luôn sử dụng các lớp v4 khi chúng sẵn có thay vì các lớp dựng sẵn (ví dụ android.app.Fragment) ngay cả khi tôi chỉ lo lắng về ICS và các thiết bị mới hơn?

+0

Nếu bạn chỉ lo lắng về ICS và ở trên, hãy sử dụng các đoạn mới hơn. Những người tương thích ngược bị hạn chế vì chúng được tạo ra để hỗ trợ các phiên bản cũ hơn. Ngoài ra, nếu bạn đã trả lời câu hỏi của riêng bạn thì hãy chắc chắn chấp nhận câu trả lời của bạn để những người khác có thể hưởng lợi từ thông tin của bạn. – MCeley

+2

Tôi đã nghe nhiều lần từ Google Engineers (@ IO + DevBytes) rằng chúng tôi nên sử dụng thư viện compat ngay cả khi chúng tôi có minSdk ở mức 14 (Android 4.0) trở lên. Tại sao? Bởi vì họ có thể cập nhật thư viện hỗ trợ thường xuyên hơn so với hệ điều hành Android được cập nhật trên thiết bị. (nhận xét được chỉnh sửa sau @Intrications đã chỉ ra số phiên bản sai - thx) –

+0

@ZsoltSafrany, bạn có liên kết đến bất kỳ đoạn mã DevBytes hoặc IO cụ thể nào không? – yiati

0

Về khả năng tương thích ngược, thực sự sử dụng phiên bản gói hỗ trợ v4 là cách tiếp cận tốt nhất.

Là sự thay đổi của các thiết bị di chuyển về phía các hệ điều hành mà có các chức năng được xây dựng trong nó có lẽ sẽ trở nên dễ dàng hơn để sử dụng phiên bản SDK, như tất cả các chức năng tìm thấy trong gói hỗ trợ sẽ được bao gồm trong SDK.

Còn bây giờ, gắn bó với v4 để cung cấp hỗ trợ cho 2.2/2.3 các thiết bị mà vẫn giữ một phần lớn của chiếc bánh thiết bị Android

+4

Tôi đồng ý rằng đó là một lợi ích to lớn mà v4 cung cấp hỗ trợ cho các thiết bị cũ. Tuy nhiên câu hỏi là ngược lại. Ngay cả khi mọi người trên thế giới đều có thiết bị ICS (hoặc mới hơn), tôi không thể thấy tại sao tôi nên sử dụng android.app.Fragment thay vì phiên bản V4 Fragment. Lý do là thư viện hỗ trợ v4 chứa nhiều chức năng hơn. – TommyTh

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