Saya ingin mengakses sumber daya seperti String atau Drawable dengan namanya dan bukan int id.
Metode mana yang akan saya gunakan untuk ini?
java
android
android-resources
Aswan
sumber
sumber
Jawaban:
Ini akan menjadi sesuatu seperti:
R.drawable.resourcename
Pastikan Anda tidak memiliki
Android.R
namespace yang diimpor karena dapat membingungkan Eclipse (jika itu yang Anda gunakan).Jika itu tidak berhasil, Anda selalu dapat menggunakan metode konteks
getResources
...Di mana
this.context
diinternalisasi sebagaiActivity
,Service
atauContext
subkelas lainnya .Memperbarui:
Jika itu nama yang Anda inginkan,
Resources
kelas (dikembalikan olehgetResources()
) memilikigetResourceName(int)
metode, dan agetResourceTypeName(int)
?Pembaruan 2 :
The
Resources
kelas memiliki metode ini:Yang mengembalikan bilangan bulat dari nama sumber daya, tipe & paket yang ditentukan.
sumber
R.drawable.resourcename
adalah bilangan bulat.Jika saya mengerti benar, ini yang Anda inginkan
Di mana "ini" adalah Kegiatan, ditulis hanya untuk memperjelas.
Jika Anda menginginkan sebuah String di strings.xml atau pengidentifikasi elemen UI, gantikan "drawable"
Saya memperingatkan Anda, cara mendapatkan pengenal ini sangat lambat, gunakan hanya jika diperlukan.
Tautan ke dokumentasi resmi: Resources.getIdentifier (Nama string, String defType, String defPackage)
sumber
sumber
•
Kotlin Version
viaExtension Function
Untuk menemukan id sumber daya dengan namanya Di Kotlin, tambahkan snippet di bawah ini di file kotlin:
ExtensionFunctions.kt
•
Usage
Sekarang semua id sumber daya dapat diakses di mana pun Anda memiliki referensi konteks menggunakan
resIdByName
metode:sumber
Cara sederhana untuk mendapatkan ID sumber daya dari string. Di sini resourceName adalah nama sumber daya ImageView di folder drawable yang termasuk dalam file XML juga.
sumber
Saya sarankan Anda menggunakan metode saya untuk mendapatkan ID sumber daya. Ini jauh lebih efisien, daripada menggunakan metode getIdentidier (), yang lambat.
Berikut kodenya:
sumber
sumber
Saya merasa kelas ini sangat membantu untuk menangani sumber daya. Ini memiliki beberapa metode untuk menangani dimens, warna, drawable, dan string, seperti ini:
sumber
selain solusi @lonkly
metode:
sumber
Di Kotlin berikut ini berfungsi dengan baik untuk saya:
Jika sumber daya ditempatkan di folder mipmap, Anda dapat menggunakan parameter "mipmap" alih-alih "drawable".
sumber