我正在使用 android-sdk 提供的复数字符串。我使用以下代码创建复数字符串:
<plurals name="valuestr">
<item quantity="zero">Choose a value.</item>
<item quantity="one">%d unit.</item>
<item quantity="other">%d units.</item>
</plurals>
Java 代码:
textView.setText(getResources().getQuantityString(R.plurals.valuestr,0,0));
当我设置“0”以外的任何值时,它工作正常,但当我设置“0”时,它显示“0 单位”。。
请帮忙!
更新
在互联网上搜索更多内容时,我遇到了一个使用 java.text.MessageFormat
类的解决方法:
<resources>
<string name="item_shop">{0,choice,0#No items|1#One item|1<{0} items}</string>
</resources>
然后,根据代码,您只需执行以下操作:
String fmt = resources.getText(R.string.item_shop);
textView.setText(MessageFormat.format(fmt, amount));
您可以在 javadocs for MessageFormat 中阅读有关格式字符串的更多信息
最佳答案
最近在 G+ 上发布了一篇关于此的帖子。 简而言之,这是因为这不会根据整数(0 = 零)选择最接近的匹配项,而是因为它会寻找最佳的语法选择。
在您的示例中,您使用了单位。 正确的用法是; 0 个单位 1个单位 2个单位
制作,零几乎等于 1 以上的任何其他数量
在这里阅读全文; https://plus.google.com/116539451797396019960/posts/VYcxa1jUGNo
关于android - 复数不能按预期在 android 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829943/