从资源中获取字符串的两种方式有什么区别:
setPositiveButton(R.string.some_string);
或者
setPositiveButton((getString(R.string.some_string));
?
在这两种情况下,我都会得到相同的结果。
从资源中获取字符串的两种方式有什么区别:
setPositiveButton(R.string.some_string);
或者
setPositiveButton((getString(R.string.some_string));
?
在这两种情况下,我都会得到相同的结果。
setPositiveButton 有多个接受不同类型参数的重载。
打电话时
setPositiveButton(R.string.some_string);
您告诉您的应用程序将正按钮文本设置为等于您的资源 ID“some_string”引用的字符串。
然而
setPositiveButton((getString(R.string.some_string));
您正在获取“some_string”的字符串值,然后将其分配给您的肯定按钮;
它们的结果是相同的,因为第一种方法为您执行“getString(R.string.some_string)”部分
R.string.some_string
是一个公共的最终静态 int,它是 R.java 文件中特定字符串的固定 ID。这是自动生成的。
getString(R.string.some_string)
通过读取R.java文件返回上面引用的String。
这取决于执行情况
setPositiveButton(String)
和
setPositiveButton(int)
内部有什么不同,比如错误检查。
另一个区别是,使用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。
不仅会翻译它,还会格式化它,让您更好地控制您的代码。