Baru-baru ini saya menemukan bahwa AndroidStudio mengingatkan saya untuk menghapus beberapa pemeran kelas. Saya ingat bahwa di masa lalu, kita harus memberikan hasil findViewById, tapi sekarang itu tidak perlu.
Hasil findViewById masih View, jadi saya ingin tahu mengapa kita tidak perlu membuat kelas?
Saya tidak dapat menemukan dokumen yang disebutkan itu, adakah yang bisa menemukan dokumen?
android
casting
findviewbyid
Eric Zhao
sumber
sumber
<T extends View> T findViewById(int id)
?Jawaban:
Dimulai dengan API 26,
findViewById
gunakan inferensi untuk jenis pengembaliannya, jadi Anda tidak perlu lagi melakukan casting.Definisi lama:
Definisi baru:
Jadi, jika Anda
compileSdk
setidaknya 26, itu berarti Anda dapat menggunakan ini :)sumber
ClassCastException
.Menurut artikel ini :
sumber
Dalam versi yang lebih lama:
Dari Android Studio 3.0 dengan SDK 26:
sumber
Android Studio mengingatkan untuk menghapus casting, jika Anda menggunakan atribut umum dari kelas Tampilan , seperti visibilitas atau beberapa metode umum, seperti onClick ()
Sebagai contoh:
Dalam hal ini Anda cukup menulis:
sumber
Android 0, bersihkan casting
Salah satu hal yang diumumkan google di IO 2017 adalah sesuatu yang disebut 'dibuang' :). Pengembang Android tidak perlu melakukan casting manual untuk findViewById (). Misalnya cara lama untuk mendapatkan tampilan teks menggunakan findViewById () akan menjadi seperti ini.
Sedangkan cara baru akan seperti ini
Ini perubahan sederhana. Tetapi untuk seorang programmer berpengalaman, kode bersih seperti ini dapat membuat Anda sangat senang dan ini membantu dengan suasana hati coding Anda :)
Untuk dapat melakukan ini, Anda hanya perlu mengatur versi sdk proyek yang dikompilasi ke versi 26 di build.gradle aplikasi Anda.
Anda masih dapat menargetkan versi SDK sebelumnya juga, jadi ini adalah perubahan yang tidak mengganggu.
Sekarang masalah sebenarnya, bagaimana Anda membersihkan kode lama yang menggunakan casting selama ini. Terutama ketika Anda memiliki ratusan file aktivitas. Anda dapat melakukannya secara manual, atau mungkin menyewa magang untuk melakukannya 😛. Tapi untungnya bagi semua magang itu, studio android sudah siap untuk membantu kami dengan ini.
Saat Anda meletakkan tanda sisipan Anda (atau mengklik casting redundan), studio android akan menyarankan 2 opsi untuk menangani casting redundan.
Pertama-tama akan disarankan untuk menghapus pemain yang berlebihan atau Anda dapat memilih kode pembersihan. Ini akan menghapus semua pemeran yang berlebihan untuk file itu. Ini lebih baik, tetapi kami menginginkan lebih. Kami tidak ingin membuka setiap file dan melakukan ini membersihkan satu per satu.
Salah satu hal yang membuat IntelliJ idea Special adalah fitur yang disebut niat tindakan. Yang harus Anda lakukan adalah menekan ctrl + shift + A dan kemudian ketik clean. Dan pilih Code Clean up action, dan pilih seluruh lingkup proyek. Dengan beberapa langkah sederhana ini, kode Anda akan jauh lebih bersih.
Satu poin penting adalah Anda melakukan ini dengan beberapa sistem kode versi. Dengan cara ini Anda dapat membandingkan perubahan yang dibuat oleh tindakan niat dan mengembalikan file apa pun yang Anda inginkan.
Disalin dari pos asli:
https://medium.com/@abangkis/android-0-clean-up-casting-c30acec56cef
sumber
why
, bukanhow
:The result of findViewById is still View, so i want to know why we don't need to cast the class?
Dalam kode sumber
ViewGroup
, ada para pemain argumen kembali. Jadi tidak perlu dilemparkan lagi:sumber