平常我們是以
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) {
"未知錯誤"
}
}
沒有留言:
張貼留言