Mengapa menggunakan Android Fragments?

15

Saya telah membaca dokumentasi dan beberapa utas pertanyaan lain tentang topik ini dan saya tidak benar-benar merasa yakin; Saya tidak melihat dengan jelas batasan penggunaan teknik ini.

Fragmen sekarang dipandang sebagai Praktik Terbaik ; setiap Kegiatan pada dasarnya harus merupakan dukungan untuk satu atau lebih Fragmen dan tidak memanggil tata letak secara langsung.

Fragmen dibuat untuk:

  1. memungkinkan Activityuntuk menggunakan banyak fragmen, untuk mengubah di antara mereka, untuk menggunakan kembali unit-unit ini ... ==> Fragmentitu benar-benar bergantung pada Contextaktivitas, jadi jika saya memerlukan sesuatu yang generik yang dapat saya gunakan kembali dan tangani dalam banyak Kegiatan, saya bisa buat tata letak atau Tampilan kustom saya sendiri ... Saya tidak akan peduli tentang Lapisan Pengembangan Kompleksitas tambahan ini yang akan ditambahkan fragmen.

  2. penanganan yang lebih baik untuk resolusi yang berbeda ==> OK untuk tablet / ponsel jika prosesnya panjang, kami dapat menampilkan dua (atau lebih) fragmen dalam Aktivitas yang sama di Tablet, dan satu per satu di ponsel. Tetapi mengapa saya selalu menggunakan fragmen ?

  3. menangani panggilan balik untuk bernavigasi di antara Fragmen (yaitu: jika pengguna Masuk Saya menunjukkan fragmen lain saya menunjukkan fragmen lain). ===> Coba lihat berapa banyak bug yang dimiliki SDK Log-in karena hal ini, untuk memahami bahwa itu benar-benar (?) ...

  4. mengingat bahwa Aplikasi Android didasarkan pada Kegiatan ... Menambahkan siklus hidup lain dalam Kegiatan akan lebih baik untuk merancang Aplikasi ... Maksud saya modul, skenario, manajemen data dan konektivitas akan dirancang lebih baik, karena cara. ===> Ini adalah jawaban dari seseorang yang terbiasa melihat Android SDK dan Kerangka Android dengan visi Fragmen. Saya tidak berpikir itu salah, tetapi saya tidak yakin itu akan memberikan hasil yang baik ... Dan itu benar-benar abstrak ...

====> Mengapa saya menyulitkan hidup saya, lebih banyak coding, selalu menggunakannya? selain itu, mengapa ini merupakan praktik terbaik jika itu hanya alat untuk beberapa kasus? apa saja kasus ini?

ahmed_khan_89
sumber
1
Tidak jelas apa yang Anda tanyakan, dapatkah Anda meringkas pertanyaan, mungkin di bawah penghitungan keuntungan yang seharusnya dan kritik Anda terhadap masing-masing?
logc
Saya menambahkan pertanyaan terperinci.
ahmed_khan_89
Saya tersesat seperti @logc. Bagaimana Anda menangani kasus ini tanpa Fragmen?
neontapir
Saya memberikan apa yang akan saya lakukan tanpa Fragmen: (1) membuat kontrol generik khusus dan menggunakannya kembali di tempat yang saya inginkan (2) menggunakan 2 Kegiatan dan menavigasi dengan startActivityForResult, atau hanya mengubah antara tampilan (menampilkan / menyembunyikan, menggembungkan / menghapus ...) tanpa pengkodean terlalu banyak ... (3) Anda dapat menggunakan panggilan balik bahkan dalam Aktivitas dengan tampilan (4) Ini adalah jawaban abstrak yang selalu saya dapatkan ketika saya membahas topik ini ... yang membutuhkan lebih banyak penjelasan ...
ahmed_khan_89
1
Hmm. T&J ini menunjukkan batasan desain stackexchange di mana poster aslinya mengambil jawaban "terbaik". (Berbeda dengan slant.co, di mana semua orang memberikan suara.) Tidak ideal untuk pertanyaan luas seperti ini. Di sini, sebuah pertanyaan samar mendapat jawaban yang diterima yang jelas setuju dengan apa yang ingin didengar si penanya. Jika Anda tidak melihat alasan untuk menggunakan fragmen dalam situasi Anda, maka jangan lakukan. Pertanyaan yang lebih baik adalah untuk meminta pro / kontra dari fragmen vs aktivitas . Dan ada banyak utas tentang topik itu.
ToolmakerSteve

Jawaban:

5

Fragmen adalah bagian modular dari suatu Kegiatan yang memiliki siklus hidupnya sendiri, menerima acara masukannya sendiri, yang dapat Anda tambahkan atau hapus saat aktivitas berjalan (semacam "sub aktivitas" yang dapat Anda gunakan kembali dalam aktivitas yang berbeda)

Terlepas dari keuntungan nyata menggunakan fragmen, optimisasi UI di berbagai layar, ini memungkinkan Anda mengelola pemrosesan latar belakang aktivitas tanpa komponen antarmuka pengguna yang terlihat.

Sekarang...

====> Mengapa saya menyulitkan hidup saya, mengkode lebih banyak ... ??

Meskipun disarankan, Anda tidak perlu melakukannya kecuali jika Anda berencana untuk mengontrol siklus hidup elemen individual dan / atau menggunakan kembali stack-state atau sejarah view sebelumnya.

Zeus
sumber
5

Jika ada "use case" gateway "untuk skeptis fragmen, itu mungkin dialog. Metode lama ditinggalkan showDialog(...), onCreateDialog(...), dll, yang bagus dalam rangka akan memanggil mereka untuk secara otomatis menghancurkan dan menciptakan dialog Anda saat aktivitas hosting yang hancur dan diciptakan. Jika Anda membuat dialog sendiri secara langsung, Anda harus mengelola semua hal itu sendiri. Tetapi jika Anda menggunakan DialogFragment, Anda dapat sekali lagi membiarkan kerangka kerja mengaturnya untuk Anda. Dalam hal ini, fragmen dapat sangat menyederhanakan pengkodean Anda.

Kevin Krumwiede
sumber
1

Saya menanyakan pertanyaan ini lebih dari satu tahun yang lalu.

Saya menggunakan fragmen setiap hari dan saya akan merekomendasikannya.

Pertama-tama, saya ingin mengatakan bahwa menggunakan fragmen hanyalah sebuah opsi dan akan menjadi refleks untuk mempertimbangkannya setelah Anda mulai menggunakannya.

Keuntungan:

1 / itu membantu untuk memodulasi kode di mana Anda dapat memiliki aliran penuh dalam satu Kegiatan, dalam fragmen yang terpisah. Contoh: + daftar / kisi & detail, + login & registrasi & lupa kata sandi, + dll. Ini luar biasa untuk mendapatkan kode yang dapat digunakan kembali, yang selalu dapat Anda salin & lewati di berbagai proyek.

2 / Anda memiliki siklus hidup baru, penuh dengan kerepotan itu benar, tetapi dengan kelebihan juga. Contoh: fragmen instance yang disimpan luar biasa karena memecahkan masalah orientasi.

3 / Anda dapat mengelola aliran fragmen Anda dengan acara dan pendengar dari Aktivitas.

4 / setumpuk fragmen Anda di Aktivitas Anda.

5 / gunakan bilah Tindakan yang sama di banyak layar.

Dan banyak lagi...

Saya masih menggunakan Kegiatan sebagai wadah saja kadang-kadang, terutama untuk kasing Kamera. Beberapa API Android dan beberapa perpustakaan pihak ketiga tidak mudah diimplementasikan dalam fragmen.

Ya, seperti alat apa pun, Anda harus mempertimbangkannya, dan menilai sendiri apakah lebih baik menggunakannya dalam suatu kasus atau lainnya.

Saya harap ini bisa membantu !!!

ahmed_khan_89
sumber