將資源 ID 傳遞給方法時,通常需要存取 ID 和對應的字串。例如,考慮“圖示”資源:
R.drawable.icon
要取得 ID 和字串“圖示”,可以探索多種方法:
一種解決方案涉及利用資源。 getIdentifier() 方法:
int resID = getResources().getIdentifier("icon", "drawable", getPackageName()); String iconString = "icon";
但是,最近的研究顯示 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); // or other resource class String iconString = "icon";
儘管這種反射方法可能更有效,但重要的是要注意潛在的缺點。在啟用了程式碼/資源收縮的發布版本中,此解決方案可能會失敗。此外,如果字串名稱與預期的資源名稱格式不同,它可能不起作用。
以上是如何從字串名稱中高效取得Android資源ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!