通过variables从Strings.xml获取string

我想从strings.xml中得到一个string。 我知道如何做到这一点。 但我的问题是别的:我有一个stringvariables每次都改变,每当它改变,我想看看strings.xml,并检查如果该stringvariables存在于Strings.xml中,然后获取文本。

例如:

String title="sample title" \\ which changes String city= "sample city" String s = getResources().getString(R.string.title); 

在第三行:title是一个String,在Strings.xml中没有任何名为String的“title”,我该怎么做? 请帮帮我

Related of "通过variables从Strings.xml获取string"

据我可以告诉,你可以使用public int getIdentifier (String name, String defType, String defPackage) 。 不过,它的使用是令人沮丧的。

要使用它(我没有这样做,但我曾经读过这个方法),你可能需要:

 int identifier = getResources().getIdentifier ("title","string","your.package.name.here"); if (identifier!=0){ s=getResources().getString(identifier); } else{ s="";//or null or whatever } 

有一件事你可以做dynamic键获取string是使2个string数组,并把它们放在一个HashMap。

arrays.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="title_keys"> <item>title1</item> <item>title2</item> <item>title3</item> </string-array> <string-array name="title_values"> <item>Real Title 1</item> <item>Real Title 2</item> <item>Real Title 3</item> </string-array> </resources> 

在你的代码中:

 String[] titleKeys = getResources().getStringArray(R.array.title_keys); String[] titleValues = getResources().getStringArray(R.array.title_values); HashMap<String, String> titles = new HashMap<String, String>(); for(int i = 0; i < titleKeys.length; i++) { titles.put(titleKeys[i], titleValues[i]); } 

最后,要从dynamic密钥获取您的标题:

 titles.get(titleFromSomewhere); 

你不会的。 你使用strings.xml作为常量string。 你想要做的是两件事情之一。

1)你想要一个string是恒定的,但是是less数几个选项之一(例如,一个国家列表中的一个项目)。 在这种情况下,将所有选项放在strings.xml中,并在int中保存当前使用的那个。 当你需要得到实际的string时,使用getString()。

2)它可以是任何string(例如,用户input的名字)。 在这种情况下,它根本不在strings.xml中,只是使用一个Stringvariables。

这是无法完成的,资源被转换为R.java中的唯一整数,并用于查找实际的string资源。

所以R.string.title实际上是类似于0x78E84A34

你可以编写你自己的类来为你pipe理string,利用HashMap<String,String>来查找完整的string以获得更短的“key”string。