2010-05-30 133 views
2

好的,我已經有了允許我通過字符串資源索引的代碼。現在,如何在不知道名稱的情況下獲取特定資源項目的價值?通過Android字符串資源索引

這裏的指數環:

Field[] fLst = R.string.class.getFields(); 

for(Field f : fLst){ 

    Log.i(dbgTag, "Field Entry: R.string." + f.getName()); 

} 

感謝你的努力...

回答

2

首先,你知道資源的名稱。你甚至把它放在你的Log電話。因此,一種選擇是在Resources對象上使用getIdentifier()(通常通過在Activity或其他Context上調用getResources()獲得)。

或者,假設您有Field對象,請致電f.getInt(R.string.class)

在這兩種情況下(getIdentifier()getInt()),你現在有資源的數字標識符,此時你可以打電話getString()Activity以獲得實際String值。

使用反射 - 無論是直接還是通過getIdentifier() - 都會變慢。請儘可能避免您嘗試的方法。如果您絕對必須使用反射,請確保緩存結果,因此不需要重複執行相同的查找。

+0

非常感謝。當然,現在看起來非常明顯。 而且,是的,我完全意識到使用反射的花費。 – gssi 2010-05-30 14:34:34

+0

偏離主題,但與字符串資源相關: 如果應用程序是單語言的,並且需要顯示_「請輸入小於100的值」_這樣的小Toast,我們是否應該遵循_String Resource_方法? – 2014-12-08 13:50:53