2013-10-06 115 views
0

我指的是名称,而不是它的值,例如这样的:Android - 如何从资源获取名称?

<resources> 
    <string name="magical_value_1">Lapin</string><br> 
    <string name="magical_value_2">Poulet</string><br> 
    <string name="magical_value_3">Saucisse</string><br> 
</resources> 

如果我使用String value1 = getResources().getString(R.string.magical_value_1); 这将是拉平的结果,但我需要一种方法在一个变量获得"magical_value_1"(没有拉平) 。我需要这样做是因为语言,我的应用程序中有很多语言,并且它们的值会更改,但名称(magical_value_1)是唯一保留的语言(不论语言)。谢谢

+1

您是否阅读过有关支持不同语言的支持http://developer.android.com/training/basics/supporting-devices/languages.html?这听起来对我来说,你正试图支持不同的语言,但正试图以错误的方式做到这一点...... – Darwind

回答

0

请参阅this answer

TL; DNR:

getResources().getResourceEntryName(int resid); 
+0

在他的情况下,'int resid'是什么意思? –

+0

他问如何将int值R.string.magical_value_1转换为字符串“magical_value_1”。这就是我的答案的原因! – Buddy

1

你应该考虑看看到i18n Android开发者文档。

1

如果您尝试让您的应用程序支持多种语言。这里有一些简单的例子。

比方说,你正试图让你的应用程序支持法国和英国。您需要为法国创建res/values/strings.xml(适用于法语,其他语言为法语),res/values-fr/strings.xml

内RES /值-FR/string.xml

<resources> 
    <string name="magical_value_1">Lapin</string><br> 
    <string name="magical_value_2">Poulet</string><br> 
    <string name="magical_value_3">Saucisse</string><br> 
</resources> 

而且里面RES /价值/ string.xml

<resources> 
    <string name="magical_value_1">Rabbit</string><br> 
    <string name="magical_value_2">Chicken</string><br> 
    <string name="magical_value_3">Sausage</string><br> 
</resources> 

要通过设置更改设备的语言测试。

+0

这就是我所做的,但不知道当我更改不同于英语的语言时,不起作用,但我现在已经修复 – user2580401