Pertanyaan saya terlepas dari perbedaan warisan yang jelas, apa perbedaan utama antara Fragmentdan FragmentActivity? Untuk skenario apa setiap kelas paling cocok? Saya mencoba memahami mengapa kedua kelas ini ada ...
Pertanyaan saya terlepas dari perbedaan warisan yang jelas, apa perbedaan utama antara Fragmentdan FragmentActivity? Untuk skenario apa setiap kelas paling cocok? Saya mencoba memahami mengapa kedua kelas ini ada ...
Jawaban:
A Fragmentadalah bagian dari Activity, yang memiliki:
Activitysedang berjalan.A Fragmentharus selalu disematkan dalam Activity.
Fragmentsbukan bagian dari API sebelum HoneyComb (3.0). Jika Anda ingin menggunakan Fragmentsdalam aplikasi yang menargetkan versi platform sebelum HoneyComb, Anda perlu menambahkan Paket Dukungan ke proyek Anda dan menggunakan FragmentActivityuntuk menahan Anda Fragments. The FragmentActivitykelas memiliki API untuk menangani Fragments, sedangkan Activitykelas, sebelum Honeycomb, tidak.
Jika proyek Anda hanya menargetkan HoneyComb atau lebih baru, Anda harus menggunakan Activitydan tidak FragmentActivitymenahan Fragments.
Beberapa detail:
Gunakan android.app.Fragmentdengan Activity. Gunakan android.support.v4.app.Fragmentdengan FragmentActivity. Jangan menambahkan paket dukungan Fragmentke Activitykarena akan menyebabkan Pengecualian terlempar.
Suatu hal yang harus diperhatikan: FragmentManagerdan LoaderManagermemiliki versi dukungan terpisah untuk FragmentActivity:
Jika Anda menggunakan Fragmentdalam Activity(HoneyComb dan atas), hubungi
getFragmentManager() mendapatkan android.app.FragmentManagergetLoaderManager() mendapatkan android.app.LoaderManagerjika Anda menggunakan a Fragmentdalam FragmentActivity(pra-HoneyComb), hubungi:
getSupportFragmentManager()untuk mendapatkan android.support.v4.app.FragmentManager.getSupportLoaderManager() mendapatkan android.support.v4.app.LoaderManagerjadi, jangan lakukan
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
atau
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Juga berguna untuk diketahui adalah bahwa sementara sebuah fragmen harus tertanam di Activitydalamnya, ia tidak harus menjadi bagian dari Activitytata letak. Ini dapat digunakan sebagai pekerja tak terlihat untuk aktivitas tersebut, tanpa UI sendiri.
FragmentActivity adalah Aktivitas klasik kami dengan dukungan fragmen, tidak lebih. Oleh karena itu FragmentActivity diperlukan, ketika Fragmen akan dilampirkan ke Aktivitas.
Well Fragment adalah komponen yang baik yang menyalin perilaku dasar Activity, masih bukan komponen aplikasi yang berdiri sendiri seperti Activity dan perlu dilampirkan ke Activity agar dapat bekerja.
Lihat di sini untuk detail lebih lanjut
Pikirkan FragmentActivity sebagai kelas Kegiatan reguler yang dapat mendukung Fragmen. Sebelum honeycomb, kelas aktivitas tidak dapat mendukung Fragmen secara langsung, jadi ini diperlukan dalam aktivitas yang menggunakan Fragmen.
Jika target distribusi Anda adalah Honeycomb dan di luarnya, Anda dapat memperpanjang Aktivitas sebagai gantinya.
Juga sebuah fragmen harus dianggap sebagai 'sub kegiatan'. Itu tidak bisa ada tanpa aktivitas. Selalu anggap sebuah fragmen sebagai sub kegiatan dan Anda harus baik. Jadi aktivitasnya adalah orang tua dan bagian dari hubungan simbolik anak.
a FragmentActivity adalah aktivitas ad-hoc yang berisi Fragment. Dalam beberapa kata ini saya telah menjelaskan kepada Anda salah satu perubahan penting utama itu, dengan Android 3.0 (HoneyComb), tim android telah memasukkan dalam SDK android.
Dengan jenis konsep baru ini, potongan kode dan tata letak Anda menjadi lebih fleksibel dan dapat dipelihara. Jika Anda mencari di google ada banyak contoh.