Android 和 Kotlin 可变参数:格式化字符串返回垃圾

问题描述 投票:0回答:1

我遇到了一个奇怪的问题:我有一个通用函数,用于检索资源字符串(只是为了避免每次都编写 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

垃圾随我请求的资源而变化

它看起来是一个对象标识符。

如果我不使用该方法,效果很好

这里发生了什么?

android kotlin resources variadic-functions android-resources
1个回答
15
投票

您的解决方案是使用 spread 运算符

*
:

fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)

可变数量的参数(Varargs)

© www.soinside.com 2019 - 2024. All rights reserved.