Apa peningkatan AppCompatActivity dari pada ActionBarActivity?

164

android.support.v7.app.AppCompatActivity telah ditambahkan ke perpustakaan dukungan v7 terbaru sebagai fitur baru kemarin.

Dikatakan bahwa ActionBarActivitytelah usang mendukung yang baru AppCompatActivitydan itu AppCompatActivityadalah kelas dasar untuk kegiatan yang menggunakan fitur action bar perpustakaan dukungan. Jadi, apa saja fitur baru dari AppCompatActivityover ActionBarActivity? Peningkatan apa yang AppCompatActivitydimiliki lebih ActionBarActivity? Dan apa kelebihannya AppCompatActivity? Bisakah seseorang menyediakan beberapa sampel?

Setiap tips sangat dihargai. Dan terima kasih sebelumnya.

PS: Yang paling mengejutkan saya adalah apa AppCompatActivityyang diperpanjang android.support.v4.app.FragmentActivityadalah kelas induk langsung dari ActionBarActivity! Maksudku sebenarnya sekarang yang ActionBarActivitybisa melakukan apa saja yang AppCompatActivitybisa dilakukan, mengapa Android mendorong yang terakhir?

Sementara itu, saya melihat posting blog yang menyatakan: " Ini bukan nama ganti dari ActionBarActivityke AppCompatActivity, logika internal AppCompattersedia melaluiAppCompatDelegate ", jadi apa " logika internal " dari AppCompat? Apa yang bisa AppCompatDelegatedilakukan Bisakah seseorang memposting beberapa kode tentang ini?

SilentKnight
sumber
Saya telah membacanya, itu adalah pengantar, juga dangkal.
SilentKnight
1
AppCompatActivity adalah kelas induk dari ActionBarActivity. Dan untuk ide lebih lanjut Anda perlu melihat ke dalam kode.
Pankaj Kumar
Ya, saya perhatikan ini.
SilentKnight

Jawaban:

145

Seperti yang ditulis Chris, versi usang baru ActionBarActivity(satu AppCompatActivitykelas yang diperluas ) adalah aman untuk menggunakan kelas kompatibilitas mundur. Penghentiannya hanyalah petunjuk bagi Anda yang meminta untuk menggunakan yang baru AppCompatActivitysecara langsung. AppCompatActivityadalah implementasi baru yang lebih umum yang menggunakan AppCompatDelegatekelas secara internal.

Jika Anda memulai pengembangan baru, maka Anda harus segera menggunakan AppCompatActivitykelas baru . Jika Anda memiliki kesempatan untuk memperbarui aplikasi Anda, maka ganti yang sudah usang ActionBarActivitydengan aktivitas baru juga. Kalau tidak, Anda dapat tetap dengan aktivitas yang sudah tidak digunakan lagi dan tidak akan ada perbedaan perilaku sama sekali.

Mengenai AppCompatDelegate, itu memungkinkan Anda untuk memiliki widget berwarna baru dalam suatu kegiatan, yang bukan AppCompatActivityatau tidak ActionBarActivity.

Misalnya, Anda mewarisi aktivitas dari perpustakaan eksternal, yang, pada gilirannya, tidak mewarisi dari AppCompatActivitytetapi Anda ingin aktivitas ini memiliki widget bahan berwarna (tampilan). Untuk mewujudkannya, Anda perlu membuat instance AppCompatDelegatedi dalam aktivitas Anda, mengganti metode aktivitas seperti itu addContentView(), setContentView()dll. (Lihat AppCompatDelegatejavadoc untuk daftar lengkap metode), dan di dalam metode yang diganti meneruskan panggilan ke AppCompatDelegateinstance dalam . AppCompatDelegateakan melakukan sisanya dan aktivitas "mode lama" Anda akan "terwujud".

sergej shafarenka
sumber
Contoh yang bagus .. Terima kasih @ sergej shafarenka
Rakesh L
2
Bisakah Anda memberi tahu saya bahwa apa yang terjadi ketika saya akan menggunakan Activity sebagai ganti Appcompactivity? Saya telah mencari tetapi tidak mendapatkan solusinya. Tolong bantu saya
Ravindra Kushwaha
35

Sebagian besar perubahan nama: ActionBarActivitytidak benar-benar menggambarkan semua yang dilakukannya sekarang. Anda dapat menggunakan dengan aman ActionBarActivityjika Anda mau. Anggap saja seperti symlink.

Chris Banes
sumber
AppCompatActivityadalah kelas induk langsung ActionBarActivity, sekarang yang ActionBarActivitybisa melakukan apa pun yang AppCompatActivitybisa dilakukan, mengapa Androidmendorong keluar nanti?
SilentKnight
4
@ SilentKnight: Seperti yang ditulis Chris, sebagian besar perubahan nama. Mengutip Blog Pengembang Android : "Perpustakaan Dukungan AppCompat dimulai dengan sederhana, tetapi awal yang penting: satu Bilah Tindakan yang konsisten untuk semua API 7 dan perangkat yang lebih tinggi. Dalam revisi 21, ia mengambil tanggung jawab baru: membawa palet warna bahan, pewarnaan widget, Dukungan Toolbar, dan lebih banyak lagi untuk semua perangkat API 7+. Dengan itu, nama ActionBarActivity tidak benar-benar mencakup ruang lingkup penuh apa yang sebenarnya dilakukannya. "
CommonsWare
3
Tidak aman untuk menggunakan kelas yang sudah usang, karena mereka dapat dihapus dalam versi yang akan datang. Meskipun Anda dapat dengan mudah mengganti semua referensi ActionBarActivityketika itu dihapus dari perpustakaan dukungan (misalnya saat memperbarui aplikasi Anda), saya akan merekomendasikan untuk menghindari menggunakannya mulai sekarang.
david.schreiber
12

Perpustakaan Dukungan AppCompat dimulai dengan awal yang sederhana, tetapi penting: Bilah Tindakan tunggal yang konsisten untuk semua API 7 dan perangkat yang lebih tinggi. Dalam revisi 21, dibutuhkan tanggung jawab baru : membawa palet warna materi, pewarnaan widget, dukungan Toolbar, dan lainnya ke semua perangkat API 7+. Dengan itu, nama ActionBarActivity tidak benar-benar mencakup ruang lingkup penuh apa yang sebenarnya dilakukannya .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html

AndroidGecko
sumber
..Dapatkah Anda memberi tahu saya bahwa apa yang terjadi ketika saya akan menggunakan Activity sebagai ganti Appcompactivity? Saya telah mencari tetapi tidak mendapatkan solusinya. Tolong bantu saya
Ravindra Kushwaha
9

AppCompatActivitydiperkenalkan ke Android-SDK sejak rilis dukungan android appcompat perpustakaan .

AppCompatActivityadalah kelas anak langsung FragmentActivitydari dukungan v4 dan kelas induk langsung dari ActionBarActivity.

AppCompatActivityadalah kelas dasar untuk kegiatan yang menggunakan fitur bilah tindakan pustaka dukungan .

Anda dapat menambahkan sebuah ActionBarke 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 serupa.

Adapun dukungan v7 appcompat perpustakaan, itu menambah dukungan untuk pola desain antarmuka pengguna Action Bar . Perpustakaan ini mencakup dukungan untuk implementasi antarmuka pengguna desain materi .

Berikut adalah beberapa kelas utama yang termasuk dalam pustaka appcompat v7:

  • ActionBar - Menyediakan implementasi pola antarmuka pengguna aksi bar.
  • AppCompatActivity- Menambahkan kelas aktivitas aplikasi yang dapat digunakan sebagai kelas dasar untuk aktivitas yang menggunakan implementasi bilah tindakan Perpustakaan Dukungan .
  • AppCompatDialog- Menambahkan kelas dialog yang dapat digunakan sebagai kelas dasar untuk dialog bertema AppCompat .
  • ShareActionProvider - Menambahkan dukungan untuk tindakan berbagi standar (seperti email atau posting ke aplikasi sosial) yang dapat dimasukkan dalam panel tindakan.

Setelah Anda mengunduh Pustaka Dukungan Android , pustaka ini terletak di direktori / extras / android / support / v7 / appcompat / .

SilentKnight
sumber
Bagaimana dengan android.support.v4.app.ActivityCompat? Apakah ini hanya nama lama AppCompatActivity?
Taylan
7

Sebelumnya satu-satunya titik masuk AppCompatadalah melalui kelas yang sekarang sudah tidak digunakan lagi ActionBarActivity. Sayangnya ini memaksa Anda menggunakan hierarki Activity yang membuat hal-hal seperti menggunakan menjadi PreferenceActivitytidak mungkin.

lihat dukungan chris banes -libraries-v22-1-0 untuk info lebih lanjut

pointer nol
sumber
1
Ini blog Chris, sangat dihargai.
SilentKnight
2

Rilis terbaru pustaka dukungan android, 22.1, mencela ActionBarActivitymendukung AppCompatActivity, yang berjanji untuk menghadirkan satu yang konsisten ActionBaruntuk semua perangkat dimulai dengan API Level 7 ke atas

Arpit Gandhi
sumber