首頁 >Java >java教程 >如何從字串中高效檢索 Android 資源 ID 和字串參考?

如何從字串中高效檢索 Android 資源 ID 和字串參考?

DDD
DDD原創
2024-12-20 12:56:14992瀏覽

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

從字串取得資源ID 和字串引用

許多Android 開發場景需要將資源ID 和對應的字串傳遞給方法。例如,您可能會遇到像 R.drawable.icon 這樣的引用,並且需要它的整數 ID 和字串“icon”。

解決方案 1:使用 Resources.getIdentifier()

Android Studio 提供了一個高效的方法,稱為 Resources.getIdentifier()。函數以字串、包名、資源類型為參數,傳回對應的資源ID。可以使用 getPackageName() 取得套件名稱。對於上述範例,程式碼為:

int resId = getResources().getIdentifier("icon", "drawable", getPackageName());
String resString = "icon";

解決方案2:使用反射

在Android Studio 引入Resources.getIdentifier() 之前,反射通常用於實現此功能。以下程式碼示範了這種方法:

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;
  }
}

它可以如下使用:

int resId = getResId("icon", R.drawable.class);
String resString = "icon";

效能注意事項

根據一些來源,Resources.getIdentifier() 的執行速度比基於反射的方法更快。但是,需要注意的是,反射方法在某些 Android 建置場景中可能會失敗,特別是在啟用程式碼和資源收縮時。

以上是如何從字串中高效檢索 Android 資源 ID 和字串參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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