我遇到了一个奇怪的问题:我有一个用于检索资源字符串的通用函数(只是为了避免每次都编写 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
我请求的资源的垃圾变化
它看起来是一个对象标识符。
如果我不使用该方法,它工作正常
这里发生了什么?
最佳答案
您的解决方案是使用展开运算符 *
:
fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)
关于Android 和 Kotlin 可变参数 : formatted strings returns garbage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54196203/