Saya datang dari iOS di tempat yang mudah dan Anda cukup menggunakan UIViewController. Namun, di Android hal-hal tampak jauh lebih rumit, dengan komponen UIC tertentu untuk Level API tertentu. Saya membaca BigNerdRanch untuk Android (buku ini kira-kira berumur 2 tahun) dan mereka menyarankan saya gunakan Activity
untuk meng-host saya FragmentActivities
. Namun, saya pikir Activity
sudah usang.
Jadi untuk API Level 22 (dengan dukungan minimum untuk API Level 15 atau 16), apa sebenarnya yang harus saya gunakan untuk meng-host komponen, dan untuk komponen itu sendiri? Apakah ada kegunaan untuk semua ini, atau haruskah saya menggunakan satu atau dua hampir secara eksklusif?
android
android-fragments
android-activity
android-actionbaractivity
appcompatactivity
Jameson
sumber
sumber
FragmentActivity
ies. Anda hanya meng-hostFragment
. Pada versi Android yang lebih baru,Activity
kelas itu sendiri telah diperbarui untuk menampung mereka secara langsung. Untuk mendukung versi yang lebih lamaFragmentActivity
diperkenalkan.Activity
dukungan untukActionBar
. Ini didukung pada versi lama melaluiActionBarActivity
dulu yang sekarang sudah usang dan diganti denganAppCompatActivity
. Karena, kedua kelas ini memperpanjangFragmentActivity
mereka mendukung hostingFragment
juga.Jawaban:
Tidak.
Activity
adalah garis dasar. Setiap aktivitas mewarisi dariActivity
, langsung atau tidak langsung.FragmentActivity
untuk digunakan dengan backport fragmen yang ditemukan disupport-v4
dansupport-v13
perpustakaan. Implementasi fragmen asli ditambahkan di API Level 11, yang lebih rendah dariminSdkVersion
nilai yang Anda usulkan . Satu-satunya alasan mengapa Anda perlu mempertimbangkanFragmentActivity
secara khusus adalah jika Anda ingin menggunakan fragmen bersarang (fragmen memegang fragmen lain), karena itu tidak didukung dalam fragmen asli hingga API Level 17.AppCompatActivity
berasal dariappcompat-v7
perpustakaan. Pada prinsipnya, ini menawarkan backport dari action bar. Karena bilah tindakan asli ditambahkan di API Level 11, Anda tidak perlu melakukannyaAppCompatActivity
. Namun, versi saat iniappcompat-v7
juga menambahkan backport terbatas dari estetika Desain Material, dalam hal panel aksi dan berbagai widget. Ada pro dan kontra penggunaanappcompat-v7
, jauh di luar cakupan jawaban Stack Overflow khusus ini.ActionBarActivity
adalah nama lama dari aktivitas dasar dariappcompat-v7
. Karena berbagai alasan, mereka ingin mengganti namanya. Kecuali beberapa perpustakaan pihak ketiga yang Anda gunakan bersikerasActionBarActivity
, Anda harus memilihAppCompatActivity
lebih dari ituActionBarActivity
.Jadi, mengingat Anda
minSdkVersion
di kisaran 15-16:Jika Anda ingin tampilan Desain Material yang di-backport, gunakan
AppCompatActivity
Jika tidak, tetapi Anda ingin fragmen bersarang, gunakan
FragmentActivity
Jika tidak, gunakan
Activity
Hanya menambahkan dari komentar sebagai catatan:
AppCompatActivity
memanjangFragmentActivity
, sehingga siapa pun yang perlu menggunakan fiturFragmentActivity
dapat menggunakanAppCompatActivity
.sumber
FragmentActivity
adalah leluhurAppCompatActivity
. Meskipun saya tidak merekomendasikan menggunakan fragmen bersarang, sejauh fragmen bersarang bekerja sama sekali,AppCompatActivity
akan mendukung fragmen bersarang.Activity
sebagian besar yang terbaru tanpasupport-v7
mis. Desain Material yang tidak didukung Tujuan saya adalah target 19 menit 25Theme.Material
, Anda memerlukanminSdkVersion
21 atau lebih tinggi.Activity
adalah kelas dasar dari semua kegiatan lainnya, saya tidak berpikir itu akan ditinggalkan. Hubungan di antara mereka adalah:Activity
<-FragmentActivity
<-AppCompatActivity
<-ActionBarActivity
'<-' berarti warisan di sini. The referensi mengatakan
ActionBarActivity
sudah ditinggalkan, gunakanAppCompatActivity
sebagai gantinya.Jadi pada dasarnya, menggunakan
AppCompatActivity
selalu merupakan pilihan yang tepat. Perbedaan di antara mereka adalah:Activity
adalah yang mendasar.Activity
,FragmentActivity
menyediakan kemampuan untuk digunakanFragment
.FragmentActivity
,AppCompatActivity
menyediakan fitur untukActionBar
.sumber
2019: Gunakan
AppCompatActivity
Pada saat penulisan ini (periksa tautan untuk mengonfirmasi itu masih benar), Dokumentasi Android merekomendasikan penggunaan
AppCompatActivity
jika Anda menggunakan Bilah Aplikasi.Ini adalah rasional yang diberikan:
Petunjuk umum untuk menambahkan ToolBar adalah
AppCompatActivity
NoActionBar
.ToolBar
tata letak xml untuk setiap aktivitas.ToolBar
di setiap aktivitasonCreate
.Lihat petunjuk dokumentasi untuk lebih jelasnya. Mereka cukup jelas dan bermanfaat.
sumber
Untuk level API minimum 15, Anda ingin menggunakannya
AppCompatActivity
. Jadi misalnya, AndaMainActivity
akan terlihat seperti ini:Untuk menggunakan
AppCompatActivity
, pastikan Anda telah mengunduh Perpustakaan Dukungan Google (Anda dapat memeriksanya di Tools -> Android -> SDK manager). Kemudian cukup sertakan dependensi gradle dalam file gradle.build aplikasi Anda:Anda dapat menggunakan ini
AppCompat
sebagai utama AndaActivity
, yang kemudian dapat digunakan untuk meluncurkan Fragmen atau Kegiatan lainnya (ini tergantung pada jenis aplikasi yang Anda buat).Buku BigNerdRanch adalah sumber yang bagus, tapi ya, sudah ketinggalan zaman. Bacalah itu untuk informasi umum tentang cara kerja Android, tetapi jangan berharap kelas khusus yang mereka gunakan terbarui.
sumber
Activity
kelas adalah kelas dasar. (Asli) Ini mendukung manajemen Fragmen (Sejak API 11). Tidak direkomendasikan lagi penggunaan murni karena spesialisasi yang jauh lebih baik.ActionBarActivity
sebentar menjadi pengganti kelas Aktivitas karena membuatnya mudah untuk menangani ActionBar dalam suatu aplikasi.AppCompatActivity
adalah yang cara baru untuk pergi karena ActionBar tidak dianjurkan lagi dan Anda harus menggunakan Toolbar bukan (yang saat ini ini pengganti ActionBar). AppCompatActivity mewarisi dari FragmentActivity jadi jika Anda perlu menangani Fragmen Anda bisa (melalui Manajer Fragmen). AppCompatActivity untuk API APA PUN, tidak hanya 16+ (siapa bilang begitu?). Anda dapat menggunakannya dengan menambahkancompile 'com.android.support:appcompat-v7:24:2.0'
file Gradle Anda. Saya menggunakannya di API 10 dan berfungsi sempurna.sumber
Toolbar
.Ada banyak kebingungan di sini, terutama jika Anda membaca sumber yang sudah usang.
Yang mendasar adalah
Activity
, yang dapat menampilkan Fragmen. Anda dapat menggunakan kombinasi ini jika Anda menggunakan versi Android> 4.Namun, ada juga perpustakaan dukungan yang meliputi kelas-kelas lain yang Anda sebutkan:
FragmentActivity
,ActionBarActivity
danAppCompat
. Awalnya mereka digunakan untuk mendukung fragmen pada versi Android <4, tetapi sebenarnya mereka juga digunakan untuk mendukung fungsi dari versi Android yang lebih baru (misalnya desain material).Yang terbaru adalah
AppCompat
, 2 lainnya lebih tua. Strategi yang saya gunakan adalah selalu menggunakanAppCompat
, sehingga aplikasi akan siap jika terjadi backport dari versi Android masa depan.sumber
Jika Anda berbicara tentang
Activity
,AppcompactActivity
,ActionBarActivity
dll ..Kita perlu berbicara tentang kelas Base yang mereka perpanjang, Pertama kita harus memahami hierarki kelas super.
Semua hal dimulai dari Konteks yang merupakan kelas super untuk semua kelas ini.
Context
diikuti oleh atau diperpanjang olehContextWrapper
Sekarang kita jangkau
Activity
Kelas di bawah ini dibatasi untuk memperpanjang tetapi mereka diperpanjang oleh keturunan mereka secara internal dan memberikan dukungan untuk Api tertentu
sekarang FragmentActivty
Saat menggunakan kelas ini sebagai lawan dari dukungan fragmen dan pemuat bawaan platform baru, Anda masing-masing harus menggunakan
getSupportFragmentManager()
dangetSupportLoaderManager()
metode untuk mengakses fitur-fitur tersebut.Pada 2015, ActionBarActivity tidak digunakan lagi dalam revisi 22.1.0 dari Perpustakaan Dukungan. AppCompatActivity harus digunakan sebagai gantinya.
Anda bisa menambahkan ActionBar ke aktivitas Anda saat berjalan di API level 7 atau lebih tinggi dengan memperluas kelas ini untuk aktivitas Anda dan mengatur tema aktivitas ke
Theme.AppCompat
atau tema serupaSaya merujuk dua ini satu , dua
sumber
Karena namanya kemungkinan akan berubah di versi Android masa depan (saat ini yang terbaru adalah
AppCompatActivity
tetapi mungkin akan berubah di beberapa titik), saya percaya hal yang baik untuk dimiliki adalah kelasActivity
yang diperluasAppCompatActivity
dan kemudian semua aktivitas Anda diperluas dari yang itu. Jika besok, mereka mengubah nama menjadiAppCompatActivity2
misalnya Anda harus mengubahnya hanya di satu tempat.sumber
AppCompatActivity memperluas FragmentActivity memperluas BaseFragmentActivityApi16 memperluas BaseFragmentActivityApi14 memperluas DukunganAktivitas meluas Kegiatan
Jadi Aktivitas lebih cepat dari semua & AppCompatActivity adalah yang terbaik dari semuanya.
sumber