Android.app Fragment so với android.support.v4.app bằng ViewPager?


182

Tôi có một câu hỏi liên quan đến Thư viện hỗ trợ Android, Mảnh vỡ và như một ví dụ cụ thể, ViewPagerlớp học. Ý định của tôi là tạo ra một ứng dụng có chức năng tương tự như mẫu được cung cấp trên trang web của Nhà phát triển Android ( http://developer.android.com/training/animation/screen-slide.html hoặc http://developer.android.com/ đào tạo / thực hiện-điều hướng / lateral.html ). Nhìn vào mã của họ, tôi nhận thấy họ sử dụng android.support.v4.appthư viện, mà từ nghiên cứu của tôi là cách duy nhất để truy cập vào ViewPagerlớp.

Trong tình huống của tôi, tôi không có hứng thú với khả năng tương thích ngược. Cấp API tối thiểu là 14 (Ice Cream Sandwich) và mục tiêu xây dựng là 4.2 Jelly Bean. Ở dạng đơn giản nhất, ứng dụng của tôi thực hiện chính xác như bản demo thứ hai tôi đã liên kết trên trang web của nhà phát triển Android - chỉ cần vuốt giữa ba tab với mỗi nội dung.

Tất cả các bài viết / bài đăng / câu trả lời tôi đã đọc dường như rất ủng hộ thư viện hỗ trợ v4 . Bây giờ đối với tôi, mặc dù câu hỏi dài dòng:

  1. Cách tốt nhất để cấu trúc ứng dụng của tôi - sử dụng android.support.v4.appvà do đó sử dụng SupportFragments hoặc sử dụng các Đoạn được cung cấp trong android.app- và tại sao?

  2. Nếu Fragment from android.applà con đường để đi, cách tối ưu để tiếp cận là ViewPagersgì?

  3. Nếu SupportFragments được tốt nhất phù hợp với công việc, tôi sẽ ước tính rằng họ có cùng chức năng như người kia - vì vậy mục đích của việc có họ ở tất cả các bên trong là những gì android.app?

Hy vọng rằng ai đó có sự hiểu biết rõ ràng hơn có thể cho tôi một chút rõ ràng vì tôi đang ...


1
bạn không thể sử dụng Fragmentsnếu bạn đang sử dụng ViewPagerbạn cần sử dụng thư viện hỗ trợSupportFragment
tyczj

1
SupportFragmentkhông phải là một lớp trong SDK Android ...
Karakuri

2
@Karakuri Xin lỗi vì sự nhầm lẫn; Tôi không có nghĩa là một lớp học theo nghĩa đen SupportFragment, tôi chỉ đang đề cập đến các Fragmentlớp có sẵn trong android.support.v4.app.
jonstaff

@jonstaff dù bằng cách nào bạn cũng chỉ có thể sử dụng lớp phân đoạn trong thư viện hỗ trợ
tyczj

@tyczj Cảm ơn, nhưng điều đó không thực sự trả lời câu hỏi. Tôi đang tìm kiếm thêm lý do tại sao , vì tôi đã biết không có ViewPagertrong android.app.
jonstaff

Câu trả lời:


183

Bạn có thể sử dụng ViewPagervới các đoạn gốc từ android.appgói với các bộ điều hợp từ gói android.support.v13.app . Bạn phải sử dụng bình hỗ trợ v13 cho điều đó.

Có hai phiên bản của bộ điều hợp hoạt động với nhau ViewPager, những phiên bản trong v4gói có nghĩa là được sử dụng với các đoạn hỗ trợ, phiên v13bản có các đoạn gốc.

Lý do tại sao bây giờ có hai triển khai phân đoạn là lịch sử: Các mảnh trong android.appgói được giới thiệu với Android 3 chỉ dành cho máy tính bảng và thư viện hỗ trợ được tạo để mang các mảnh vỡ cho điện thoại chạy các phiên bản cũ hơn. Trên Android 4 bạn có cả hai.

Từ kinh nghiệm của bản thân, tôi khuyên bạn nên sử dụng các đoạn hỗ trợ, ngay cả khi phát triển cho Android 4. Dưới đây là một số lý do: Mảnh vỡ hoặc Đoạn hỗ trợ?


3
Cảm ơn vì điều này! Tôi biết tôi đến bữa tiệc muộn, nhưng câu trả lời này đã giúp tôi rất nhiều.
Kyle

support.v13 hoạt động cho ViewPager ... cho đến khi bạn thử và sử dụng ViewPager trong DialogFragment :-(
SteelBytes

android.appkhông có FragmentPagerAdapternhư vậy thì việc sử dụng viewpager với android.app.Fragment trở nên không thể? có ý kiến ​​gì ở đây không? Có bất kỳ tùy chọn để xem máy nhắn tin cũ? Vì vậy, để tự động móc mảnh cho các tab đã cho
Nikhil

@Nikhil có hai phiên bản của FragmentPagerAd CHƯƠNG. Một trong android.support.v4.appgói hoạt động với các mảnh hỗ trợ, cái còn lại android.support.v13.appvới các mảnh 'bình thường'
brillenheini

Tôi đã hy vọng sử dụng v13 để tôi có thể tránh sử dụng v4. Hóa ra v4 là một phụ thuộc cho v13, vì vậy tôi cũng có thể sử dụng các phân đoạn hỗ trợ / xem máy nhắn tin.
Vas

3

android.app.Fragmentlớp không được dùng vì Android P ( liên kết ), do đó chỉ android.support.v4.app.Fragmentnên được sử dụng ở mọi nơi.


1

Nếu bạn đang nhắm mục tiêu API 11+, bạn sẽ không cần thư viện hỗ trợ [và ít nhất apk thực tế của bạn sẽ nhỏ hơn).

Nếu bạn muốn hỗ trợ mọi thứ trước Android 3.x, bạn sẽ cần thư viện hỗ trợ.

Đây có phải là những gì bạn đang hỏi?


9
bạn cần sử dụng thư viện hỗ trợ để sử dụng ViewPager, đây là những gì anh ấy đang hỏi về
tyczj

@Matt Cảm ơn câu trả lời của bạn, nhưng tôi đang tìm giải pháp tốt nhất kết hợp ViewPagerchức năng và giải thích lý do tại sao giải pháp đó là tốt nhất.
jonstaff
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.