2017-06-15 92 views
-2

假设我在的strings.xml:如何在Android中通过字符串值查找资源字符串?

<resources> 
    <string name="a">A value</string> 
    <string name="b">Another value</string> 
</resources> 

而且我想摆脱一个字符串值“值”或“另一个价值”。在运行时它可能是“a”或“b”,但我无法控制它。

因此,让我们说,在某些时候,字符串myString =“a”。我怎样才能把“A值”放在一个String局部变量中?

+1

'String yourString = getResources()。getString(R.string.a);' – Ibrahim

回答

1

可以使用的switch-case:

private String getValue(String valueOf) { 
    int resourceVal = 0; 
    switch(valueOf) { 
     case "a": 
      resourceVal = R.string.a; 
      break; 
     case "b": 
      resourceVal = R.string.b; 
      break; 
    } 
    if (resourceVal != 0) { 
     return getResources().getString(resourceVal); 
    } 
    return ""; 
} 
+0

我想我会留下你的解决方案。我认为Android框架在这种情况下有一个特殊的方法。 – cszoltan422

1

在您的活动类型R.string.中按alt+enter 它会显示可用字符串。

R.string.a 
R.string.b 

请回信告诉我它是否有帮助。如果没有,请标记为回答和给予好评;)

同时参考文档,请参见下面的

https://developer.android.com/guide/topics/resources/string-resource.html

+0

但是我遇到的问题是我不知道我需要哪一个。我从Web服务获取数据,并获得许多其他数据的ID。用这个给定的String值,ID,我必须从这个strings.xml中获取正确的字符串。有时它可能是“a”,另一次是“b”或许多其他值。 – cszoltan422

+0

如果你能告诉我一些代码 –

+0

这将是有帮助的,这是一个逻辑问题,但我知道什么可能可能返回的API然后你可以设置一个像这样的标志 if(id == 1){ R.string.a } –

0
String string = getString(R.string.yourStringName); 
0

链接那么这是一个逻辑问题,但如果你知道什么可能的回报该API,那么你可以设置一个标志,像这样

if(id == 1) { R.string.a }

+0

是的,这是它会做的伎俩,但我想知道是否有任何优雅和简单的解决方案,而不是旧的if-else if语句。 – cszoltan422

+0

如果它是一块代码创建类或只是使用开关案例 –

相关问题