Android.app Fragmen vs. android.support.v4.app menggunakan ViewPager?

182

Saya punya pertanyaan tentang Perpustakaan Dukungan Android, Fragmen, dan sebagai contoh spesifik, ViewPagerkelas. Tujuan saya adalah membuat aplikasi dengan fungsionalitas yang mirip dengan sampel yang disediakan di situs web Pengembang Android ( http://developer.android.com/training/animation/screen-slide.html atau http://developer.android.com/ pelatihan / implementasi-navigasi / lateral.html ). Melihat ke kode mereka, saya perhatikan mereka memanfaatkan android.support.v4.appperpustakaan, yang dari penelitian saya adalah satu-satunya cara untuk mengakses ViewPagerkelas.

Dalam situasi saya, saya tidak tertarik pada kompatibilitas ke belakang. Level API minimum adalah 14 (Ice Cream Sandwich) dan target build adalah 4.2 Jelly Bean. Dalam bentuknya yang paling sederhana, aplikasi saya melakukan persis seperti demo kedua yang saya tautkan di situs Android dev - hanya menggesek antara tiga tab dengan konten di masing-masing.

Semua artikel / posting / jawaban yang saya baca tampaknya sangat mendukung perpustakaan dukungan v4 . Sekarang untuk pertanyaan saya, meskipun bertele-tele:

  1. Apa cara terbaik untuk menyusun aplikasi saya - menggunakan android.support.v4.app, dan dengan demikian menggunakan SupportFragments, atau menggunakan Fragmen yang disediakan android.app- dan mengapa?

  2. Jika Fragmen dari android.appadalah cara untuk pergi, apa cara optimal untuk mendekati ViewPagers?

  3. Jika SupportFragments paling cocok untuk tugas tersebut, saya akan memperkirakan bahwa mereka memiliki fungsi yang sama dengan yang lain - jadi apa tujuan dari memiliki semuanya di dalam android.app?

Semoga seseorang dengan pemahaman yang lebih jelas dapat memberi saya sedikit klarifikasi karena saya bingung ...

Jonstaff
sumber
1
Anda tidak dapat menggunakan Fragmentsjika Anda menggunakan ViewPagerAnda harus menggunakan perpustakaan dukunganSupportFragment
tyczj
1
SupportFragmentbukan kelas di Android SDK ...
Karakuri
2
@ Karakuri Maaf atas kebingungannya; Maksud saya bukan kelas literal SupportFragment, saya hanya merujuk pada Fragmentkelas yang tersedia di android.support.v4.app.
Jonstaff
@jonstaff dengan cara apa pun Anda hanya dapat menggunakan kelas fragmen di perpustakaan dukungan
tyczj 9'13
@tyczj Terima kasih, tetapi itu tidak benar-benar menjawab pertanyaan. Saya mencari lebih banyak mengapa , karena saya sudah tahu tidak ada ViewPagerdi android.app.
Jonstaff

Jawaban:

183

Anda dapat menggunakan ViewPagerfragmen asli dari android.apppaket dengan adapter dari paket android.support.v13.app . Anda harus menggunakan jar dukungan v13 untuk itu.

Ada dua versi adapter yang bekerja dengan ViewPager, yang ada dalam v4paket dimaksudkan untuk digunakan dengan fragmen pendukung, yang ada di v13dengan fragmen asli.

Alasan mengapa sekarang ada dua implementasi fragmen adalah historis: Fragmen dalam android.app paket itu diperkenalkan dengan Android 3 hanya untuk tablet dan perpustakaan dukungan dibuat untuk membawa fragmen ke ponsel yang menjalankan versi yang lebih lama. Di Android 4 Anda memiliki keduanya.

Dari pengalaman saya sendiri, saya akan merekomendasikan menggunakan fragmen dukungan, bahkan ketika mengembangkan untuk Android 4. Berikut adalah beberapa alasan: Fragmen atau Fragmen Dukungan?

brillenheini
sumber
3
Terima kasih untuk ini! Saya tahu saya terlambat ke pesta, tetapi jawaban ini sangat membantu saya.
Kyle
support.v13 berfungsi untuk ViewPager ... sampai Anda mencoba dan menggunakan ViewPager dalam DialogFragment :-(
SteelBytes
android.apptidak memilikinya FragmentPagerAdaptermaka menjadi mustahil untuk menggunakan viewpager dengan android.app.Fragment? ada ide di sini? apakah ada opsi pager tampilan lama? Sehingga untuk secara dinamis menghubungkan fragmen untuk tab yang diberikan
Nikhil
@Nikhil ada dua versi FragmentPagerAdapter. Yang satu dalam android.support.v4.apppaket itu bekerja dengan fragmen pendukung, yang lain android.support.v13.appdengan fragmen 'normal'
brillenheini
Saya berharap untuk menggunakan v13 sehingga saya dapat menghindari penggunaan v4. Ternyata v4 adalah ketergantungan untuk v13, jadi saya mungkin juga menggunakan pager dukungan / tampilan pager.
Vas
3

android.app.Fragmentkelas sudah ditinggalkan sejak Android P ( tautan ), jadi hanya android.support.v4.app.Fragmentharus digunakan di mana saja.

Artyom
sumber
1

Jika Anda akan menargetkan API 11+, Anda tidak akan memerlukan pustaka dukungan [dan setidaknya apk Anda yang sebenarnya akan lebih kecil).

Jika Anda ingin mendukung apa pun sebelum Android 3.x, Anda memerlukan pustaka dukungan.

Apakah ini yang Anda tanyakan?

Mat
sumber
9
Anda perlu menggunakan pustaka dukungan untuk menggunakan ViewPager yang ia tanyakan
tyczj
@ Matt Terima kasih atas jawaban Anda, tetapi saya mencari solusi terbaik yang menggabungkan ViewPagerfungsionalitas, dan penjelasan mengapa solusi itu terbaik.
Jonstaff