Resources String from Name, 由字串名得到字串

想要在程式中使用resource 中的字串,可以用以下的方法

String str = getResources().getString(int id);

但是如果我們希望用resources 中的字串名來使用字串,就要先把字串名轉成id

int resId=getResources().getIdentifier(name, "string", getPackageName()))

name 是指在 R.string.XXXX 的 XXXX,
"string"是指 R.string.XXXX 的string, 所以如果是 R.drawable.XXXX,"string", 就要改成"drawable"。
最後是package name, 使用getPackageName(),來得到package name, 或直接打上package name都可以。

有了resId, 現在只要

String str=getResources().getString(resId);

如此即可得到字串。

有人說用 getResources().getIdentifier(name, "string", getPackageName())) 太沒有效率,速度慢。所以可以用另一種方法如下

 try {
            Class res=R.string.class;  // 如果是drawable就變成Class res=R.drawable.class
            Field field = res.getField("name");//name要改成字串名
            int resId = field.getInt(null);
            String str=getResources().getString(resId);
        }
        catch (Exception e) {
         
        }

速度的確快很多…




留言

這個網誌中的熱門文章

python 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT

VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change