Android 和 Kotlin 可变参数 : formatted strings returns garbage

标签 android kotlin resources variadic-functions

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

Variable number of arguments (Varargs)

关于Android 和 Kotlin 可变参数 : formatted strings returns garbage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54196203/

相关文章:

android - 如何在方向改变时调整图像大小..?

postgresql - 无法使用Kotlin和Spring数据保留数据

c# - 如何使用资源构建独立的exe?

wpf - 在运行时创建 CroppedBitmap - 不会从资源加载

android - 单击更改 TextView 背景颜色

android - 从 android 移动 sdk 在 aws 中创建帐户

android - 如何在android中编辑文本中进行电子邮件验证

generics - 编写比 Java 更优雅的 Copyable 接口(interface)

android - 如何解决公共(public)抽象乐趣入队的参数过多(responseCallback : Callback): Unit defined in okhttp3. 调用

asp.net-mvc - 如何处理 ASP.NET Web MVC 项目中的本地化/字符串值?