我正在开发一个以土耳其语语言工作的应用程序。当我用英语运行应用程序时,应用程序运行正常。现在,当我用土耳其语检查应用程序时,会收到错误结果。
我有一个阵列资源
<string-array name="pensionArr">// English(values-en)
<item>monthly</item>
<item>yearly</item>
</string-array>
<string-array name="pensionArr"> // Turkish(values-tr)
<item>aylık</item>
<item>yıllık</item>
</string-array>
我在spinner中设置了这个数组。
adapterPension = ArrayAdapter.createFromResource(this, R.array.pensionArr, android.R.layout.simple_spinner_item);
现在我将此微调器中的选定值发送到Web服务。我在那里比较英语的价值。
nameValuePairs.add(new BasicNameValuePair("pension_type",_pensiontype));
当我尝试打印值_pensiontype
时。在控制台中打印的值是这样的
yıllık//====> yearly in English.
因此该值不是在Web服务中进行比较。所以我的问题是如何使用英语值,即使我选择土耳其语。有没有办法解决这个问题。
修改:来自微调器的数据是
_pensiontype=pensionTypeDrpgetSelectedItem().toString();
请帮助我......
答案 0 :(得分:0)
问题在于文件夹的名称。主文件夹的名称为“值”(通常为英文)。文件夹的名称应为:“values-tr”。解决方案是: 1.在/ res文件夹中创建名为“values-tr”的文件夹。 2.在其中创建文件strings.xml 3.将常量放在新文件中
答案 1 :(得分:0)
请使用:
Spinner.getSelectedItemId() or
Spinner.getSelectedItemPosition()
获取所选项目的索引,并使用此索引选择要发送到服务器的英语字符串。 Spinner
仍然可以填充本地化字符串,但服务器数据始终保持英文(或者您可以将索引作为数字发送,如果您愿意)
答案 2 :(得分:0)
这是非常棘手的情况。最后,我在许多网站上搜索并找到解决方案
将服务器端的阵列维护为
String[] arr = new String{"monthly","yearly"};
将资源数组设置为微调器后
adapterPension = ArrayAdapter.createFromResource(this, R.array.pensionArr, android.R.layout.simple_spinner_item);
现在我将所选项目的位置发送到服务器
nameValuePairs.add(new BasicNameValuePair("pension_type",Integer.toString(pensionDrp.getSelectedItemPosition())));
现在我在服务器端获得数组的位置。所以直接使用索引而不是值。
工作得很好..