首頁 >Java >java教程 >如何在Android中高效率地檢索資源ID和字串值?

如何在Android中高效率地檢索資源ID和字串值?

Linda Hamilton
Linda Hamilton原創
2024-12-19 03:38:09673瀏覽

How to Efficiently Retrieve Resource IDs and String Values in Android?

在Android 中取得資源ID 和字串

在Android 開發中,取得與資源相關的資源ID 和字串值可以是一個共同的要求。考慮以下範例:

R.drawable.icon

此引用表示名為「icon」的可繪製資源。要將其 ID 和字串表示形式傳遞給方法,您有多種選擇。

使用 Resources.getIdentifier()

Resources.getIdentifier() 方法可讓您取得給定字串的資源 ID。將字串、所需的資源類型(例如,可繪製)和套件名稱作為參數傳遞。

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

這將擷取「圖示」可繪製的 ID。但是,您仍然需要使用 getString() 手動檢索字串值。

使用 Java 反射

另一種方法是使用 Java 反射來取得資源 ID 和直接字串值。但是,在某些情況下,此方法可能會失敗,例如啟用程式碼/資源收縮或資源名稱與欄位名稱不符時(例如,對於字串資源)。

try {
    Field idField = R.drawable.class.getDeclaredField("icon");
    int resId = idField.getInt(null);
    String resString = getResources().getString(resId);
} catch (NoSuchFieldException | IllegalAccessException e) {
    e.printStackTrace();
}

混合方法

混合方法可以提供兩全其美的效果。將字串值傳遞給該方法,並讓它在內部使用 getIdentifier() 來取得資源 ID。這可確保該方法僅接收字串,同時仍允許存取 ID 和字串值。

範例:

private void processResource(String resourceName) {
    int resId = getResources().getIdentifier(resourceName, "drawable", getPackageName());
    if (resId != 0) {
        // Do something with the resource ID and string value...
    }
}

透過選擇最適合您的用例的解決方案,您可以在Android 開發中有效地檢索和利用資源ID 和字串值。

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

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