首页 > 解决方案 > 针对可翻译字符串执行条件语句

问题描述

我的应用程序中有一个微调器,它显示了几个距离单位,这些距离单位是从中拉出的strings.xml(看起来像这样):

<string-array name="distance_units_array">
        <item>miles</item>
        <item>kilometers</item>
        <item>meters</item>
        <item>yards</item>
    </string-array>

如果我需要对用户输入的距离进行一些计算,但执行的计算会因距离单位而异。我可以使用以下方法做到这一点,但这是一个可怕的黑客解决方案,对于许多语言来说变得非常痛苦。

if (distanceUnit = “kilometres” || distanceUnit = “kilómetros” || etc){
    //Do stuff
}
if (distanceUnit = “miles” || distanceUnit = “millas” || etc){
    //Do other stuff
}

关于更好的实施的任何建议?我觉得每个人都distanceUnit需要一个 ID,所以我可以比较它而不是它的翻译,但是当字符串存储在strings.xml.

标签: javaandroid

解决方案


您应该开始比较他们的 ID 而不是他们的内容。

yourSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

           switch(position) {
               case 0 : //calculate miles
               case 1 : //calculate kilometres
               .....
           }
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });

推荐阅读