2016-08-16 4 views
2

にピックアップして取得私は私のカスタムダイアログである番号ピッカーで選択された値を表示するには、数量文字列を使用しています。
番号ピッカーは特定のアクティビティを実行する時間と分であるため、選択した値はピッカーの下のテキストビューに表示されます。時間ピッカーではQuantityStringsがゼロ

、私が最初にを選択すると、それは「ゼロ」のXMLファイルで定義された値として反応するが、その後、時間の他の値を選択した後、その後、私はを選択します。それは "other"と表示され、 "ゼロ"ではありません。お知らせ下さい!

次のように私のres /値/の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

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

れた文字列の選択使用は文法上の必要性にのみ基づいて行われます。英語では、数量が0であっても、0と文法的に異なるので、0の文字列は無視されます(1冊の本、1冊の本、2冊の書籍、およびそう)。逆に、韓国語では他の文字列だけが使用されます。

2つの音が量2にしか当てはまらないという事実によって誤解されないでください.2,12,102(など)がすべて互いに似ていることを言語で要求することがあります他の量とは異なる。彼らの言語が実際に主張している区別を知るためにあなたの翻訳者に依頼してください。

+0

文法上の必要性にのみ基づいていたのであれば、最初にゼロを認識したのはなぜですか? –

+0

私の間違いは、最初は「ゼロ」と認識されず、「ゼロ」行を削除して同じ結果を得ました。 –