R.string.xxx和getString(R.string.xxx)之间的区别?

时间:2012-03-26 18:00:18

标签: android android-resources getstring

从资源中获取字符串的两种方法之间有什么区别:

setPositiveButton(R.string.some_string);

OR

setPositiveButton((getString(R.string.some_string));

在这两种情况下,我得到相同的结果。

3 个答案:

答案 0 :(得分:2)

setPositiveButton有多个接受不同类型参数的重载。

致电

setPositiveButton(R.string.some_string);

您告诉应用程序将正按钮文本设置为等于资源ID“some_string”引用的字符串。

在哪里

setPositiveButton((getString(R.string.some_string));

您正在获取“some_string”的字符串值,然后将其分配给您的肯定按钮;

它们的结果是一样的,因为第一种方法为你做了“getString(R.string.some_string)”部分

答案 1 :(得分:1)

R.string.some_string

是一个公共final static int,它是R.java文件中特定String的固定ID。这是自动生成的。

getString(R.string.some_string)

通过读取R.java文件返回上面引用的String。

这取决于

的实施
setPositiveButton(String)

setPositiveButton(int)

内部有什么区别,比如错误检查。

答案 2 :(得分:0)

另一个区别是,使用 getString ,您可以设置String的格式并对其进行翻译。例如,在您的 strings.xml 文件中,您可以拥有:

<string name="message">Hello, %1$s</string>

在某些翻译XML文件中,您可以拥有相同的文件,但使用另一种语言:

<string name="message">Hola, %1$s</string>

但是,好消息是,当您想显示一条消息并进行翻译时,只需执行以下操作:

String message = getString(R.string.message, "John Doe");

而且,英文版本为你好,约翰·杜(John Doe)。但在西班牙文版本中,将是 Hola,John Doe

不仅可以翻译它,还可以对其格式化,从而使您可以更好地控制代码。