Rumah > Java > javaTutorial > Bagaimana untuk Mendapatkan ID Sumber Android dengan Cekap daripada Nama Rentetannya?

Bagaimana untuk Mendapatkan ID Sumber Android dengan Cekap daripada Nama Rentetannya?

DDD
Lepaskan: 2024-12-20 09:31:09
asal
563 orang telah melayarinya

How to Efficiently Get an Android Resource ID from its String Name?

Mendapatkan ID Sumber daripada String dalam Android

Apabila menghantar ID sumber kepada kaedah, selalunya wajar untuk mengakses kedua-dua ID dan rentetan yang sepadan. Sebagai contoh, pertimbangkan sumber "ikon":

R.drawable.icon
Salin selepas log masuk

Untuk mendapatkan kedua-dua ID dan rentetan "ikon", beberapa pendekatan boleh diterokai:

Satu penyelesaian melibatkan penggunaan Sumber. kaedah getIdentifier():

int resID = getResources().getIdentifier("icon", "drawable", getPackageName());
String iconString = "icon";
Salin selepas log masuk

Walau bagaimanapun, penyelidikan baru-baru ini telah menunjukkan bahawa Resources.getIdentifier() boleh kurang cekap daripada menggunakan pantulan.

Sebagai alternatif, anda boleh menggunakan kod berasaskan pantulan berikut:

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;
    } 
}
Salin selepas log masuk

Untuk menggunakan kaedah ini untuk sumber "ikon":

int resID = getResId("icon", R.drawable.class); // or other resource class
String iconString = "icon";
Salin selepas log masuk

Walaupun pendekatan refleksi ini mungkin lebih cekap, adalah penting untuk mengambil perhatian potensi kelemahan. Dalam binaan keluaran dengan pengecutan kod/sumber didayakan, penyelesaian ini mungkin gagal. Selain itu, ia mungkin tidak berfungsi dalam kes di mana nama rentetan berbeza daripada format nama sumber yang dijangkakan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Sumber Android dengan Cekap daripada Nama Rentetannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan