7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Android SDK

Android SDK: Menggunakan fragmen

Scroll to top
Read Time: 14 mins

Indonesian (Bahasa Indonesia) translation by fodal fadel (you can also view the original English article)

Gagasan fragmen diperkenalkan di Android 3.0, API tingkat 11. Sejak itu, masyarakat Android telah melihat enam platform utama rilis. Namun, lebih dari setengah dari perangkat Android aktif tidak memiliki fitur ini tersedia untuk mereka Native. Pengembang sebaliknya harus menggunakan perpustakaan Android dukungan jika mereka ingin menggunakan fragmen dengan perangkat ini. Pelajari cara membuat aplikasi berbasis fragmen yang dasar menggunakan Android dukungan Perpustakaan dalam tutorial ini.

Langkah 0: Persiapan

Tutorial ini adalah untuk pengembang Android yang perlu menargetkan sebagian besar perangkat Android saat ini di tangan pengguna dan ingin memanfaatkan fragmen API, yang menyederhanakan dukungan untuk berbagai ukuran layar. Anda harus merasa nyaman dengan Jawa, Eclipse, dan menjadi akrab dengan dasar-dasar Android.

Tutorial ini adalah juga untuk mereka yang membutuhkan petunjuk lebih rinci daripada apa yang memberi kami tutorial fragmen lain atau mereka yang membutuhkan yang segar mengambil fragmen.

Untuk sepenuhnya melihat efek dan perbedaan desain layar fragmen responsif, dirancang dengan baik, Anda akan memerlukan dua perangkat (atau dikonfigurasi emulator): satu dengan layar telepon-ukuran biasa dan lain dengan layar berukuran tablet.

Perhatikan bahwa kode ini didasarkan dari kode penerapan terbaik yang dibuat oleh wizard aplikasi Android baru dalam Eclipse. Proyek dapat di-download dan melihat-lihat di Google kode hosting, seperti dapat diinstal biner.

Langkah 1: Klasik dua-Pane

Contoh berikut akan menjadi contoh klasik fragmen, juga dikenal sebagai "guru-detail" aliran. Kita mulai dengan daftar "hal" (item, mereka bisa lagu, film, pets, apa pun) dan, ketika "sesuatu" adalah diklik, kami menampilkan rincian untuk "hal" yang spesifik. Jika ukuran layar perangkat dapat menampung menunjukkan daftar dan rincian, dua fragmen yang akan digunakan. Jika tidak, hanya satu digunakan dan pengguna harus klik untuk bor ke rincian.

Berikut adalah gambar yang menunjukkan sisi-by-side organisasi khas layar sebelum fragmen, atau ketika layar tidak cukup besar untuk menangani begitu banyak informasi:

Single Pane FragmentsSingle Pane FragmentsSingle Pane Fragments

Dan di sini adalah desain layar bila dilakukan dengan fragmen seperti itu akan menampilkan pada perangkat besar atau luas disaring seperti tablet:

Dual Pane FragmentsDual Pane FragmentsDual Pane Fragments

Fragmen tidak menghilangkan kebutuhan untuk kegiatan. Dan, pada kenyataannya, Anda masih perlu kegiatan dua: satu kegiatan akan menangani kasus dimana kedua fragmen yang ditampilkan (dua panel mode) dan lain untuk menangani tampilan detail ketika hanya daftar yang ditampilkan pada layar pertama karena ukuran layar perangkat kecil. Melalui penggunaan sumber daya yang tepat terorganisir, aktivitas pertama akan menyesuaikan secara dinamis dalam menanggapi layar lebar. Secara internal, kegiatan ini harus tahu jika itu dalam mode dua panel atau tidak begitu dengan benar dapat menempatkan fragmen detail atau bertelur rinci kegiatan yang diperlukan, yang akan berisi hanya fragmen detail.

Untuk menyederhanakan: Anda akan perlu untuk melaksanakan dua kegiatan kelas dan dua fragmen kelas untuk menangani kasus ini. Aktivitas kelas cukup sederhana, karena mereka hanya menampilkan benar fragmen atau fragmen dan mengontrol aliran app. Untuk contoh kami di sini kita menggunakan kelas aktivitas berikut: kelas utama, CircleListActivity, kadang-kadang digunakan detail kelas, CircleDetailActivity. Kami juga memiliki dua kelas fragmen yang benar-benar melakukan tata letak dan gambar: CircleListFragment dan CircleDetailFragment. Ya, kita sedang berbicara tentang lingkaran. Lingkaran yang hanya hal-hal. Tidak perlu untuk peduli dengan "hal" kami telah memilih.

Langkah 2: Membuat kegiatan utama

Kegiatan utama, CircleListActivity, adalah titik awal untuk memuat salah satu atau kedua fragmen untuk layar.

Perhatikan bahwa kita menggunakan Android dukungan FragmentManager, tidak satu diperkenalkan di Android 3.0.

Namun, kegiatan kelas tidak sangat sedikit. Semua logika utama terjadi secara otomatis karena sistem operasi Android akan memuat versi sumber daya tata letak yang benar untuk perangkat ketika setContentView() metode panggilan dilakukan. Ini berarti Anda hanya perlu untuk memusatkan perhatian pada sumber daya tersebut. Bagaimana sumber dengan benar memilih untuk menggunakan fragmen satu atau dua?

Langkah 3: Mendefinisikan layout untuk layar

Pop Quiz: Layout berapa banyak kita perlu menampilkan fragmen kedua?

Jawaban: 3, tapi itu tidak termasuk tata letak setiap fragmen.

Kita perlu satu tata letak yang akan menampilkan daftar fragmen dan fragmen detail. Kita perlu layout lain yang hanya akan menunjukkan daftar fragmen. Akhirnya, kita perlu tata letak yang ketiga yang akan menunjukkan hanya fragmen detail.

Tata letak dapat menggunakan tag fragmen yang menunjukkan fragmen tertentu untuk me-load. Namun, ini hanya bekerja untuk tetap fragmen. Untuk fragmen-fragmen yang dinamis, seperti fragmen detail yang akan menampilkan informasi yang berbeda berdasarkan apa dipilih, kami menggunakan pandangan wadah untuk menunjukkan mana fragmen harus pergi dalam tata letak. Wadah yang paling umum digunakan adalah FrameLayout, itu hanya berisi satu elemen anak dan kemudian dapat diposisikan sebagai sebuah blok di mana saja di tata letak yang mengandung.

Untuk memulai, kami akan membuat layout satu fragmen dua.

Pertama, tata letak yang akan menampilkan hanya fragmen daftar:

Sekarang tata letak yang menampilkan hanya fragmen rincian:

Jika ini tampak cukup sederhana, itu adalah karena mereka. Untuk mengulangi, ini adalah layout yang menentukan mana fragmen, tidak akan yang fragmen terlihat seperti.

Akhirnya, mari kita menggabungkan mereka ke dalam sebuah layout yang akan menampilkan fragmen kedua:

Sekarang bahwa Anda tahu apa yang terlihat seperti layout, Anda masih mungkin bertanya-tanya bagaimana benar mendapat dipilih pemrograman.

Langkah 4: Pengorganisasian layout untuk skenario yang berbeda

Anda tahu bahwa sistem operasi Android akan memilih sesuai sumber daya berdasarkan karakteristik perangkat saat ini. Jadi, pada pandangan pertama, Anda bisa mulai menempatkan layout di folder seperti tata letak-tanah, tata letak-besar, tata letak-kecil, dan sebagainya. Anda akan nama tata letak fragmen satu daftar sama seperti tata letak dual fragmen dan menempatkan mereka berdua dalam berbagai folder yang berbeda. Ini bahkan mungkin bekerja, tetapi metode ini akan sulit untuk mempertahankan, dengan beberapa file yang berbeda untuk beberapa layout yang identik.

Sebaliknya, Anda dapat menggunakan referensi untuk merujuk ke item tertentu di Android dari folder sumber daya tertentu. Terbaik untuk melihat contoh dari hal ini. Kami akan nama layout berbasis kegiatan kami tiga (sebagai lawan dari fragmen-fragmen individu yang terkandung dalam): activity_circle_detail, activity_circle_list, dan activity_circle_twopane. Kemudian kami akan menaruh semua tiga di folder letak standar. Anda telah melihat dalam kode, dari langkah 2 bahwa kami hanya pernah memuat tata letak activity_circle_list. Atau apakah kita?

Sekarang mari kita tambahkan beberapa referensi. Cara yang baik untuk menentukan apakah layar cocok untuk dua panel sisi-by-side adalah lebar, dp unit. Katakanlah layout dual-panel kita membutuhkan setidaknya 850dp unit layar lebar. Mari kita membuat sebuah folder bernama nilai-w850dp. Artinya harus menutupi kepadatan tinggi 7" tablet dan kepadatan menengah 10" tablet dalam modus lansekap, tapi itu tidak akan menyertakan xhdpi telepon dan umumnya akan mengecualikan modus potret pada sebagian besar perangkat, kecuali untuk beberapa dengan layar resolusi sangat tinggi. Dalam folder ini, buat file bernama refs.xml dan tempat berikut di dalamnya:

Bagaimana cara kerjanya? Ketika lebar adalah 850dp atau lebih besar, referensi ini akan digunakan untuk memuat tata letak. Artinya, dual-panel tata letak akan digunakan sebagai pengganti panel individu yang sedang ditampilkan secara terpisah. Sebagai sumber daya ini qualifier (Konvensi penamaan folder) tidak diperkenalkan sampai API tingkat 13, kami juga ingin memasukkan referensi ini sama dalam kualifikasi cocok folder lain yang telah ada lebih lama, seperti nilai-nilai-xlarge-tanah. Ekstra besar didefinisikan sebagai setidaknya 960dp oleh 720dp, jadi kita juga perlu untuk memastikan hal itu akan hanya ditampilkan dalam modus lansekap oleh termasuk tanah kualifikasi.

Dengan layout yang terorganisir, saatnya untuk mengubah fokus kami kembali ke kode Java. Sementara tata letak yang tepat akan menarik pada layar ketika aktivitas daftar pertama diluncurkan, apa yang terjadi ketika salah satu daftar item disadap?

Langkah 5: Mendefinisikan fragmen daftar

Daftar fragmen menangani menampilkan array kita hal-hal (lingkaran, dalam hal ini). Hal ini tidak seperti ListActivity yang menyediakan beberapa penanganan tugas-tugas rutin daftar untuk menyederhanakan kode Anda sendiri. Daftar perlu berisi semua kalangan dari sumber data (Pura-Pura sumber data, dalam kasus ini), dan juga perlu untuk menangani keran pada item tertentu untuk menampilkan rincian. Namun, karena sebuah fragmen tidak aktivitas, itu harus lulus atas kejadian yang mungkin berpotensi mengubah layar untuk mengendalikan aktivitas kelas. Keran yang terjadi dalam modus dual pane akan memuat sebuah fragmen di panel lainnya yang sama pada layar sedangkan keran moda tunggal panel harus memuat kegiatan baru dengan detail fragmen. Namun, fragmen tidak, dan seharusnya tidak, tahu tentang rincian konfigurasi ini.

Anda harus, bagaimanapun, membuat cara yang konsisten untuk menyampaikan informasi ini ke mengandung atau mengendalikan aktivitas, yang tidak, dan harus tahu tentang rincian ini. Paling sering, komunikasi ini dikelola melalui antarmuka kelas yang didefinisikan dalam fragmen yang harus dilaksanakan oleh aktivitas apapun yang menggunakannya--metode khas melakukan callback.

Di sini adalah seluruh kode untuk kelas CircleListFragment, termasuk mekanisme callback aman dan penanganan keran yang memanggil metode callback untuk lulus alur kerja penanganan sampai dengan mengendalikan aktivitas.

Selain fungsi yang dijelaskan sebelumnya, ada beberapa ListView manajemen sehingga disadap pada daftar item menunjukkan sebagai dipilih ketika dalam modus dual-panel dan beberapa fragmen dasar manajemen siklus hidup. Seperti sebelumnya, kami menggunakan versi dukungan fragmen sehingga kita kompatibel dengan perangkat yang lebih tua. Pastikan untuk impor paket yang benar di dukungan Perpustakaan (impor android.support.v4.app.ListFragment).

Sekarang kita perlu untuk kembali mengendalikan aktivitas kelas sehingga itu lilin menangani callback.

Langkah 6: Memperbarui kegiatan utama

Menambahkan dukungan callback untuk aktivitas kelas utama, CircleListActivity, dengan memiliki melaksanakan antarmuka CircleListFragment.Callbacks buat sebelumnya. Kemudian menerapkan metode onItemSelected() cabang app perilaku berdasarkan Apakah perangkat dapat menangani dua modus panel atau tidak. Berikut adalah kelas sepenuhnya diperbarui:

Menggunakan bendera untuk menentukan jika tampilan dual-panel menunjukkan, metode onItemSelected() baik mulai kegiatan baru atau menggantikan fragmen setiap saat ini ditemukan di R.id.circle_detail_container dengan sebuah instance baru dari CircleDetailFragment kelas. Untuk desain semacam ini, sedikit lebih diperlukan. Pengenal lingkaran yang pengguna mengetuk adalah baik berlalu untuk instance fragmen baru melalui argumen atau aktivitas baru mana itu akan berubah pengenal menjadi argumen, juga.

Pada titik ini, kita perlu untuk mengimplementasikan CircleDetailActivity kelas untuk kasus satu-pane dan menerapkan kelas CircleDetailFragment.

Langkah 7: Mendefinisikan satu Pane Detail kegiatan

Ingat kesederhanaan layout untuk kelas aktivitas ini. Tata letak adalah hanya sebuah tempat untuk detail fragmen kelas. Semua kegiatan ini perlu lakukan adalah mendapatkan pengenal yang dilewatkan ke, berubah yang menjadi argumen fragmen, kemudian tambahkan fragmen ke wadah.

Jika itu terdengar sederhana, Anda dapat melihat bahwa itu adalah. Bagian akhir kita perlu mendapatkan untuk adalah fragmen detail itu sendiri.

Langkah 8: Tampilkan Detail fragmen

Detail fragmen kelas perlu melihat data lingkaran apa harus dimuat dan ditampilkan. Kemudian, dibutuhkan untuk memuat dan, Yah, menampilkan data tersebut. Kelas akan memuat sebuah layout. Desain tata letak dapat generik, tetapi harus mempertimbangkan fakta bahwa, sebagai fragmen, itu mungkin atau mungkin tidak menjadi layar penuh. Dengan kata lain, seperti biasa, jangan membuat asumsi tentang ukuran layar perangkat. Tentu saja, juga seperti biasa, Anda dapat membuat beberapa layout berdasarkan sumber daya kualifikasi. Perlu diketahui ini akan dimuat berdasarkan karakteristik layar perangkat secara keseluruhan dan tidak didasarkan pada karakteristik area layar (panel mode).

Dalam contoh ini, ada navigasi tidak lebih lanjut, sehingga tidak ada panggilan balik diperlukan karena ada dengan daftar fragmen.

Tanpa basa-basi lagi, di sini adalah seluruh kode untuk kelas CircleDetailFragment:

Meskipun semua kode pada dasarnya sama dengan non-dukungan fragmen, catatan impor tepat untuk android.support.v4.app.Fragment untuk memastikan untuk menggunakan kelas Android dukungan yang tepat.

Langkah 9: Memperbarui berkas manifes Android untuk fragmen

Sekarang kita perlu menambahkan fragmen ke file manifest, kanan? Sebenarnya, tidak. Tidak seperti kegiatan kelas, fragmen tidak terdaftar di berkas manifes. Jadi, cukup tambahkan aktivitas kelas untuk berkas manifes dan Anda baik untuk pergi.

Berikut adalah contoh berkas manifes untuk kesenangan melihat Anda:

Perhatikan versi lebar kisaran dari Android SDK yang dapat didukung dengan pendekatan ini dengan menggunakan dukungan Perpustakaan fragmen fungsionalitas.

Langkah 10: Menjalankan App

Sementara kita belum disajikan kode sumber lengkap yang disisipkan dalam tutorial dan sumber daya untuk aplikasi ini, Anda dapat mengisi rincian tersebut sendiri. Atau Anda dapat men-download kode (Lihat langkah 0), kompilasi dan menjalankannya. Atau Anda dapat men-download biner pracipta dan menginstalnya.

Namun Anda mendapatkan itu, ketika menjalankan dalam konfigurasi perangkat dengan 850 dp lebar atau layar adalah ekstra besar (setidaknya 960 x 640 dp), Anda akan melihat layar ini desain (1920 x 1200 pixel layar di 10"):

Dan ketika layar lebar kurang dari 850dp, tata letak beralih ke modus panel tunggal, seperti ini 1280px lebar telepon layar dalam modus lansekap:

Atau telepon 768 pixel lebar potret ini:

Atau layar lebar potret 1200px ini pada tablet:

Karena penggunaan disarikan pengukuran, seperti penggunaan unit dp, Anda bisa melihat dua layout yang berbeda pada layar dengan resolusi identik piksel, namun kepadatan piksel yang berbeda. Ini membantu menjaga informasi kepadatan (piksel lebih tidak selalu berarti pengguna ingin lebih banyak data) dari menjadi terlalu tinggi pada fisik kecil layar dan merupakan salah satu hal besar mengenai sistem sumber daya Android.

Kesimpulan

Anda telah belajar dasar-dasar menggunakan API fragmen Android tersedia dalam Android dukungan Perpustakaan. Meskipun ada banyak, banyak lagi untuk fragmen, tutorial ini memberi Anda titik awal untuk digunakan-kasus yang sangat umum yang dapat secara dramatis meningkatkan tampilan dan nuansa dari banyak aplikasi atau bagian dari aplikasi, terlepas dari versi Android mereka berjalan dengan atau layar mereka sedang ditampilkan di atas.

Tentang penulis

Pengembang mobile Lauren Darcey dan Shane Conder telah menulis beberapa buku tentang Android pengembangan: buku pemrograman mendalam berjudul Android pengembangan aplikasi Wireless (sekarang dalam edisi ketiga sebagai dua volume set), Sams mengajar diri sendiri Android Pengembangan aplikasi 24 jam sehari, dan belajar pemrograman aplikasi Android Kindle api: panduan tangan untuk membangun aplikasi Android pertama Anda. Ketika tidak menulis, mereka menghabiskan waktu mereka mengembangkan perangkat lunak mobile di perusahaan mereka dan menyediakan jasa konsultasi. Mereka dapat dihubungi di via email ke androidwirelessdev+mt@gmail.com, melalui blog mereka androidbook.blogspot.com, dan Twitter @androidwireless.

Perlu lebih banyak bantuan menulis aplikasi Android? Memeriksa buku-buku terbaru dan sumber daya kami!

Buy Android Wireless Application Development, 3rd Edition, Volume 1 Buy Sam's Teach Yourself Android Application Development in 24 Hours, 2nd Edition Mamlambo code at Code Canyon

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.