從字串取得資源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中文網其他相關文章!