使用Concatenation构建代码?

时间:2015-04-30 11:04:37

标签: java android

有没有办法在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中提取正确的字符串?

2 个答案:

答案 0 :(得分:5)

Java是一个已编译的代码,而不是已执行的代码,您不能像解释语言那样编写代码。

在android中管理不同语言的最佳方法是为每种语言使用string.xml文件。  看一下本教程,它会对你有所帮助:

Supporting different languages in android

答案 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