你能用字符串调用字符串资源吗?

The*_*Dev 1 android android-xml android-resources

我有一个方法从EditText返回大约20个可能的字符串之一.这些字符串中的每一个都有相应的响应,可以在strings.xml中的T​​extView中打印.有没有办法使用类似的东西从strings.xml调用字符串context.getResources().getString(R.strings."stringFromMethod")?还有另一种方法从这样的大型列表中调用字符串吗?

我能想到的唯一方法是将每个字符串转换为int,并使用它来查找字符串数组或switch语句中的字符串.这两个都涉及一个巨大的if-else if语句将字符串转换为int,并且如果添加或删除任何字符串我将更有可能错过一个并且有趣的bug会采取足够的步骤来改变狩猎.干净利落的想法吗?

编辑:忘了添加,我尝试使用的另一种方法是从中获取resourceID

int ID = context.getResources().getIdentifier("stringFromMethod", "String", context.getPackageName())
Run Code Online (Sandbox Code Playgroud)

并取整数并将其放入

context.getResources().getString(ID)
Run Code Online (Sandbox Code Playgroud)

这看起来似乎也没有用.

azg*_*fer 5

不,你不能.getString()需要整数格式的资源ID,因此您不能在其中附加字符串.

但是,您可以尝试这样做:

String packageName = context.getPackageName();
int resId = context.getResources().getIdentifier("stringFromMethod", "string", packageName);
if (resId == 0) {
    throw new IllegalException("Unknown string resource!"; // can't find the string resource!
}
string stringVal = context.getString(resId);
Run Code Online (Sandbox Code Playgroud)

上面的语句将返回资源R.string.stringFromMethod的字符串值.

  • 嗯,这很快,而且非常简单.我使用"String"而不是"string"作为defType.谢谢你的例子,解决了它. (2认同)