Rumah >Java >javaTutorial >Bagaimana untuk Mendapatkan ID Sumber Android dan Rujukan Rentetan dengan Cekap daripada Rentetan?

Bagaimana untuk Mendapatkan ID Sumber Android dan Rujukan Rentetan dengan Cekap daripada Rentetan?

DDD
DDDasal
2024-12-20 12:56:141075semak imbas

How to Efficiently Retrieve Android Resource IDs and String References from a String?

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!

Kenyataan:
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