0

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

setPositiveButton(R.string.some_string);

或者

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

?

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

4

3 回答 3

2

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

打电话时

setPositiveButton(R.string.some_string);

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

然而

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

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

它们的结果是相同的,因为第一种方法为您执行“getString(R.string.some_string)”部分

于 2012-03-26T18:06:19.893 回答
1
R.string.some_string

是一个公共的最终静态 int,它是 R.java 文件中特定字符串的固定 ID。这是自动生成的。

getString(R.string.some_string)

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

这取决于执行情况

setPositiveButton(String)

setPositiveButton(int)

内部有什么不同,比如错误检查。

于 2012-03-26T18:09:13.293 回答
0

另一个区别是,使用getString您可以格式化字符串并进行翻译。例如,在您的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");

而且,在英文版中,它将是Hello, John Doe。但在西班牙语版本中,它将是Hola, John Doe

不仅会翻译它,还会格式化它,让您更好地控制您的代码。

于 2019-03-05T23:15:42.490 回答