我制作了一个简单的程序来学习使用 Kotlin 在 android studio 中的连接。所以,我尝试从 strings.xml 中的资源中获取一个字符串值,如下所示,并与一个值连接
<string name="txt_show">Your lucky number is %1$s</string>
Run Code Online (Sandbox Code Playgroud)
我从 getString 收到警告“不要连接文本...”
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val firstNumber = numEditText.text
processButton.setOnClickListener {
val result = concatText(firstNumber.toString().toDouble())
resultView.text = getString(R.string.txt_show, " ") + result.format(2)
}
}
private fun concatText(myNumber: Double): Double {
val luckyNumber = 1.79
return luckyNumber * myNumber
}
private fun Double.format(digits: Int) = java.lang.String.format("%.${digits}f", this)}
Run Code Online (Sandbox Code Playgroud)
通过替换
resultView.text = getString(R.string.txt.show, " ") + result.format(2)
Run Code Online (Sandbox Code Playgroud)
和
val finalResult = result.toInt()<p>
resultView.text = getString(R.string.txt_show, finalResult)<p>
Run Code Online (Sandbox Code Playgroud)
并替换%1$s到%1$dstrings.xml的资源中
警告消失了,但我遇到了问题,首先结果是整数,这不是我所期望的。它应该是双重的。其次,在 getString 中添加函数格式将停止程序并在屏幕上显示“意外错误...”消息。
我怎么解决这个问题?
Bok*_*ken 13
如果您的字符串带有一些占位符,例如:
<string name="price_string">Your price: %d</string>
Run Code Online (Sandbox Code Playgroud)
爪哇
String text = getString(R.string.price_string, 2.5);
Run Code Online (Sandbox Code Playgroud)
科特林
val text = getString(R.string.price_string, 2.5)
Run Code Online (Sandbox Code Playgroud)
.
爪哇:
// Read text
String priceString = getString(R.string.price_string);
// Fill it
String output = String.format(priceString, 2.5);
Run Code Online (Sandbox Code Playgroud)
科特林
// Read text
val priceString = getString(R.string.price_string)
// Fill it
val output = String.format(priceString, 2.5)
// or
val output = priceString.format(2.5)
Run Code Online (Sandbox Code Playgroud)
如果你有,%s你必须用String. 在这里您有更多信息:https : //developer.android.com/guide/topics/resources/string-resource#formatting-strings
| 归档时间: |
|
| 查看次数: |
8530 次 |
| 最近记录: |