有没有办法在Android studio / eclipse中使用Concatenation创建代码构建代码?
换句话说,我有2套字符串,每个国家我正在处理ZA和KE。他们有2种不同的EULA。
所以我想拉出与相应国家相关的字符串。
String message = mContext.getString(R.string.eula_string_za);
以上是输出代码的示例。在某种程度上,我可以根据If语句进行“创建”吗?
String str = "mContext.getString(R.string.eula_string_";
if (something = "ZA") {
str += "za);";
} else {
str += "ke);";
}
因此,如果选择的国家/地区为ZA,则输出代码应为
mContext.getString(R.string.eula_string_za);
如果它的KE应该是
mContext.getString(R.string.eula_string_ke);
然后结果将从strings.xml中提取正确的字符串?
答案 0 :(得分:5)
Java是一个已编译的代码,而不是已执行的代码,您不能像解释语言那样编写代码。
在android中管理不同语言的最佳方法是为每种语言使用string.xml文件。 看一下本教程,它会对你有所帮助:
答案 1 :(得分:2)
如果你想走这条路,你可以尝试使用反射。如果您想使用反射,请查看Class.getField(…)
。
您可以使用相同的if
语句来查找正确的字符串,而不是首先使用if
语句构建代码字符串:
String str;
if (something.equals("ZA")) {
str = mContext.getString(R.string.eula_string_za);
} else {
str = mContext.getString(R.string.eula_string_ke);
}
请注意,您的条件something = "ZA"
不符合您的预期:它会为something
分配字符串"ZA"
,然后将自己评估为"ZA"
,这样就不会甚至编译。正确的方法是something == "ZA"
,但即使是does not work in the general case。您需要使用String.equals(…)
。有些人甚至认为你应该反过来使用它(即"ZA".equals(something)
)来避免NullPointerException
......
另一种可能性是首先从县建立Map
到您拥有的所有EULA的相应字符串ID,然后要求Map
返回正确的EULA。
但可能最干净的解决方案是使用Androids内置机制as hkN suggests。