Yur*_*yuk 8 android kotlin kotlin-extension
strings.xml中
<string name="my_string">Showing your number: %1$s</string>
Run Code Online (Sandbox Code Playgroud)
ActivityExt.kt
fun Activity.showToast(textResId: Int, vararg formatArgs: String) {
val text = getString(textResId, formatArgs)
Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.kt
val number = 11
showToast(R.string.my_string, number.toString())
Run Code Online (Sandbox Code Playgroud)
带有以下文字的吐司显示:
Showing your number: [Ljava.lang.String;@2cfa3b]
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
nha*_*man 12
使用传播运算符:
fun Activity.showToast(textResId: Int, vararg formatArgs: String) {
val text = getString(textResId, *formatArgs)
Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)
目前,您将传递一个数组作为格式参数.通过使用spread运算符,您可以将数组的内容作为format参数传递.
zsm*_*b13 11
您应该使用spread运算符将varargs传递给getString函数:
val text = getString(textResId, *formatArgs)
Run Code Online (Sandbox Code Playgroud)
这是因为函数formatArgs内部的类型showToast是Array<String>(没有vararg类型或类似的东西),如果你在没有它的情况下传入它*,你只会传递一个参数,它将是数组而不是它的内容.
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |