android - 复数不能按预期在 android 中工作

标签 android string

我正在使用 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&lt;{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/

相关文章:

php - 这个简单的查询有问题。有人能看到吗?

mysql - 如何将 URL 的整数子字符串内连接到整数?

java - Dagger2组件初始化

Android Facebook 分享对话框回调

android - 如何在 Unity 应用程序和常规 Android 应用程序之间进行通信?

python - 在 randint 参数中使用变量

php - 在 PHP 中是否有等效于 C# 的逐字字符串文字?

c# - C# 中的字符串操作以递增数字

java - 在自定义 View 的点击监听器上实现可重用的自定义

android - 如何使用java比较android中的当前日期和选定日期