为什么在串联Android Studio中的字符串之前需要添加@SuppressLint(“ SetTextI18n”)批注

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

[我尝试使用以下代码来连接'number'(整数变量)和'$'(字符串),但是我从android studio中收到警告:“请勿将显示为setText的文本连接在一起。请使用带占位符的资源字符串。”并建议我添加“ @SuppressLint("SetTextI18n")”。在此之后,警告消失了。

串联字符串有什么问题。为什么我们需要添加

@SuppressLint("SetTextI18n")
fun displayPrice(number: Int){
    price_text_view.text= "$number$"
}
android string kotlin concatenation settext
1个回答
1
投票

“ I18”代表“国际化”。 Android的本地化资源机制使您无需修改​​代码即可支持各种语言环境。例如,这是您的应用程序必须支持多种货币时的外观:

res/values-en_US/strings.xml中:

<string name="price">%d$</string>

res/values-en_UK/strings.xml中:

<string name="price">%d£</string>

res/values-de/strings.xml中:

<string name="price">%d€</string>

然后您的代码将根据设备的语言环境自动选择正确的版本:

fun displayPrice(number: Int) {
    price_text_view.text = resources.getString(R.string.price, number)
}

如果您的应用程序仅支持带有$符号的货币,则对其进行硬编码并使用@SuppressLint("SetTextI18n")使警告静音是有意义的。否则,请考虑使用字符串资源。

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