Mendapatkan ID Sumber dan Rujukan Rentetan daripada Rentetan
Banyak senario pembangunan Android memerlukan menghantar kedua-dua ID sumber dan rentetan yang sepadan kepada kaedah. Sebagai contoh, anda mungkin menemui rujukan seperti R.drawable.icon dan memerlukan kedua-dua ID integer dan rentetan "ikon".
Penyelesaian 1: Menggunakan Resources.getIdentifier()
Android Studio menyediakan kaedah cekap yang dikenali sebagai Resources.getIdentifier(). Fungsi ini mengambil rentetan, nama pakej dan jenis sumber sebagai parameter dan mengembalikan ID sumber yang sepadan. Nama pakej boleh diperoleh menggunakan getPackageName(). Untuk contoh yang dimaksudkan, kodnya ialah:
int resId = getResources().getIdentifier("icon", "drawable", getPackageName()); String resString = "icon";
Penyelesaian 2: Menggunakan Refleksi
Sebelum pengenalan Resources.getIdentifier(), refleksi Android Studio lazimnya digunakan untuk mencapai fungsi ini. Kod berikut menunjukkan pendekatan ini:
public static int getResId(String resName, Class<?> c) { try { Field idField = c.getDeclaredField(resName); return idField.getInt(idField); } catch (Exception e) { e.printStackTrace(); return -1; } }
Ia boleh digunakan seperti berikut:
int resId = getResId("icon", R.drawable.class); String resString = "icon";
Pertimbangan Prestasi
Menurut beberapa sumber , Resources.getIdentifier() berprestasi lebih pantas daripada pendekatan berasaskan refleksi. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa kaedah refleksi mungkin gagal dalam senario binaan Android tertentu, terutamanya apabila pengecutan kod dan sumber didayakan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Sumber Android dan Rujukan Rentetan dengan Cekap daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!