2022-04-15

【Kotlin】以程式方式取得 resource string 的值

平常我們是以

getString(R.string.id)

的方式取得 resource string 的值


resource id 的變數名是有規律的時候,我們能以程式的方式取得其值

假設我們的 /values/strings.xml 的內容如下

 
<string name="strResult1">三爻全陽,表示全動,是天體之象。</string>
<string name="strResult2">三爻全陰,表示全靜,是大地之象。</string>
<string name="strResult3">上爻為陽爻,中下爻為陰爻。</string>
<string name="strResult4">上爻為陰爻,中下爻為陽爻。</string>
<string name="strResult5">下爻為陽爻,中上爻為陰爻。</string>
<string name="strResult6">下爻為陰爻,中上爻為陽爻。</string>
<string name="strResult7">中爻為陽爻,上下爻為陰爻。</string>
<string name="strResult8">中爻為陰爻,上下爻為陽爻。</string>
 


MainActivity.kt
 
var ff = 1
var sResult = applicationContext.stringFromResourcesByName("strResult$ff")    // 傳回 "三爻全陽,表示全動,是天體之象。"

...
...

private fun Context.stringFromResourcesByName(resourceName: String): String {
    return try {
        val resourceId = resources.getIdentifier(
            resourceName,
            "string",
            "完整package name"
        )
        getString(resourceId)
    }
    catch (e: Resources.NotFoundException) {
        "未知錯誤"
    }
}
 

沒有留言:

張貼留言