Eclipse/Java - R.string.* 中的值返回 int?

2022-08-31 15:18:34

我以为我会很优雅,并使用字符串.xml文件来定义一些常量字符串,例如异常消息。在字符串中.xml我点击“添加”,选择“字符串”选项(不是“字符串数组”),然后给它一个名称和值。我很惊讶地看到这段代码不起作用:

throw new Exception(R.string.MyExceptionMessage);

这失败了,因为R.string.MyExceptionMessage实际上是int类型。我可以通过查看R.java来验证该类型。我错过了什么?


答案 1

类中的所有内容都是引用,因此它只是定义为 .Rint

如果您的代码在 Android 中运行或有权访问 Android ,则可以调用以获取实际值。Contextcontext.getString(R.string.my_exception_message)String

或者,对于不需要翻译的异常字符串,因此不需要严格定义在Android资源.xml文件中,您可以将字符串作为常量存储在某种界面中。这样,您就可以从可能无权访问 的实用程序类中引用字符串。StringConstantsContext


答案 2

使用“getResources().getString(id)”方法。

  getResources().getString(R.string.title_activity)

轰,你有你的绳子。请务必将该字符串存储在 values 文件夹中的字符串.xml文件中。