java - 针对可翻译字符串执行条件语句
问题描述
我的应用程序中有一个微调器,它显示了几个距离单位,这些距离单位是从中拉出的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
.
解决方案
您应该开始比较他们的 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) {
}
});
推荐阅读
- google-maps - 添加带有经度和纬度的谷歌地图链接以在html中显示
- python-2.7 - PySpark MLPC 多目标分类
- javascript - win.open 后更改外部页面上的 id 值
- python - OJ说我的python程序编译错误,即使它在我的电脑上运行良好(ubuntu 18.04)
- ios - CIDepthBlurEffect,出现奇怪的垂直线
- arrays - 在单个聚合中多次查找后合并 Mongo 文档
- c++ - 从 std::exception 派生类时出错
- amazon-web-services - 通过 Socket.io 连接到 Application Load Balancer 后面的 AWS Fargate 服务器
- node.js - 如何为离线网络创建安全 (TLS/SSL) 浏览器信任的证书
- haskell - 如何将 monad 转换器添加到 Spock 应用程序中?