我遇到了一个奇怪的问题:我有一个通用函数,用于检索资源字符串(只是为了避免每次都编写 context.resources.getString() ):
protected fun string(@StringRes stringRes: Int, vararg args: String): String = app.getString(stringRes, args)
到目前为止,当我添加可变参数来检索格式化字符串时,工作正常。简单的字符串仍然可以正常工作,但是当我尝试检索格式化的字符串时:
string(R.string.formatted_string, myId)
我的字符串资源:
<string name="formatted_string">#%s</string>
我得到一些垃圾:
#[Ljava.lang.String;@3a59711
预计:
#4848684
垃圾随我请求的资源而变化
它看起来是一个对象标识符。
如果我不使用该方法,效果很好
这里发生了什么?
您的解决方案是使用 spread 运算符
*
:
fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)