首頁 >Java >java教程 >如何檢索 Android 資源 ID 及其對應的字串?

如何檢索 Android 資源 ID 及其對應的字串?

Barbara Streisand
Barbara Streisand原創
2024-12-22 07:45:42887瀏覽

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

Android:從字串中擷取資源ID

問題

您需要將資源ID 傳遞給方法,但您也想存取對應的字串資源。例如,您有 R.drawable.icon,並且您需要整數 ID 和字串“icon”。

使用 Resources.getIdentifier()

一個解是使用 Resources 類別中的 getIdentifier() 方法。此方法將字串資源名稱和資源類型(例如,可繪製)作為參數,並傳回關聯的整數 ID。

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

// Retrieve the string resource
String stringResource = resources.getString(id);

使用反射

另一個選項就是利用反射直接存取資源ID欄位。請注意,此解決方案可能無法在啟用程式碼/資源壓縮的發布版本中運作。

// 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);

組合兩種方法

為了獲得最大的靈活性,您可以組合這兩種方法。將字串資源名稱傳遞給方法,並在方法中使用首選技術(反射或 getIdentifier())來檢索 ID 和字串。

// 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
  ...
}

以上是如何檢索 Android 資源 ID 及其對應的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn