Rumah > Java > javaTutorial > Bagaimana untuk Mendapatkan ID Sumber Android dan Rentetan yang Sesuai?

Bagaimana untuk Mendapatkan ID Sumber Android dan Rentetan yang Sesuai?

Barbara Streisand
Lepaskan: 2024-12-22 07:45:42
asal
947 orang telah melayarinya

How to Retrieve an Android Resource ID and its Corresponding String?

Android: Mendapatkan semula ID Sumber daripada String

Masalah

Anda perlu menghantar ID sumber kepada kaedah, tetapi anda juga mahukan akses kepada sumber rentetan yang sepadan. Sebagai contoh, anda mempunyai R.drawable.icon, dan anda mahukan kedua-dua ID integer dan rentetan "ikon".

Penyelesaian

Menggunakan Resources.getIdentifier()

Satu penyelesaian ialah menggunakan kaedah getIdentifier() dalam kelas Resources. Kaedah ini mengambil nama sumber rentetan dan jenis sumber (cth., boleh dilukis) sebagai argumen dan mengembalikan ID integer yang berkaitan.

// Get the integer ID for the icon
int id = resources.getIdentifier("icon", "drawable", getPackageName());

// Retrieve the string resource
String stringResource = resources.getString(id);
Salin selepas log masuk

Menggunakan Refleksi

Pilihan lain adalah menggunakan refleksi untuk mengakses medan ID sumber secara langsung. Ambil perhatian bahawa penyelesaian ini mungkin tidak berfungsi dalam binaan keluaran dengan pengecutan kod/sumber didayakan.

// Get the R.drawable class
Class<?> clazz = R.drawable.class;

// Get the field for the icon resource
Field idField = clazz.getDeclaredField("icon");

// Get the integer ID
int id = idField.getInt(null);

// Retrieve the string resource
String stringResource = resources.getString(id);
Salin selepas log masuk

Menggabungkan Kedua-dua Pendekatan

Untuk fleksibiliti maksimum, anda boleh menggabungkan kedua-dua pendekatan . Hantarkan nama sumber rentetan kepada kaedah dan gunakan teknik pilihan (reflection atau getIdentifier()) dalam kaedah untuk mendapatkan ID dan rentetan.

// Method that accepts the string resource name
public void processResource(String resourceName) {
  // Get the R.drawable class
  Class<?> clazz = R.drawable.class;

  try {
    // Try using reflection to get the ID
    Field idField = clazz.getDeclaredField(resourceName);
    int id = idField.getInt(null);

    // Retrieve the string resource
    String stringResource = resources.getString(id);
  } catch (Exception e) {
    // Fallback to using getIdentifier()
    int id = resources.getIdentifier(resourceName, "drawable", getPackageName());
    String stringResource = resources.getString(id);
  }

  // Use the ID and string as needed in your method
  ...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Sumber Android dan Rentetan yang Sesuai?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan