让QuantityStrings获取零

时间:2016-08-16 15:09:48

标签: android

我正在使用数量字符串来显示自定义对话框数字选择器中选择的值。
 由于我的号码选择器是我想要执行特定活动的小时和分钟,因此所选值会显示在选择器下方的 textview 中。

在小时选择器上,当我最初选择 0 时,它会按照 XML文件中的定义对“”值做出反应,但随后,在为小时选择了其他值之后,然后我选择 0 作为小时,它将我的选择视为“其他”,而不是“”。请指教!

我的res / values / strings.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals name="hour_picker">
        <item quantity="zero">"You want to walk for  "</item>
        <item quantity="one">"You want to walk for %1$d hour and  "</item>
        <item quantity="other">"You want to walk for %1$d hours and "</item>
    </plurals>
    <plurals name="minute_picker">
        <item quantity="one"> %1$d minute</item>
        <item quantity="other"> %1$d minutes</item>
    </plurals>
</resources>

.java文件如下:

  public class SelectDurationDialogFragment extends DialogFragment implements NumberPicker.OnValueChangeListener {

    NumberPicker  hour_picker,minute_picker;
    TextView hour_txt,minute_txt;
...
@Override
    public void onValueChange(NumberPicker numberPicker, int i, int i1) {

        switch (numberPicker.getId()){
            case R.id.numberPicker1:
                hour_txt.setText(String.format(getResources().getQuantityString((R.plurals.hour_picker),i1),i1));
                break;
            case R.id.numberPicker2:
                minute_txt.setText(String.format(getResources().getQuantityString((R.plurals.minute_picker),i1),i1));
                break;
        }
    }

1 个答案:

答案 0 :(得分:1)

来自http://developer.android.com/guide/topics/resources/string-resource.html#Plurals

选择使用哪个字符串完全基于语法必要性。在英语中,即使数量为0,也会忽略零字符串,因为0在语法上与2不同,或者除了1之外的任何其他数字(&#34;零书&#34;,&#34;一本书&#34;,&#34;两本书&#34;等等)。相反,在韩语中只会使用其他字符串。

不要被这样的事实误导,比如,两个声音只能适用于数量2:一种语言可能要求2,12,102(等等)都被视为一个另一个但与其他数量不同。依靠你的翻译来了解他们的语言实际上坚持的区别。