从资源中获取字符串的两种方法之间有什么区别:
setPositiveButton(R.string.some_string);
OR
setPositiveButton((getString(R.string.some_string));
在这两种情况下,我得到相同的结果。
答案 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 。
不仅可以翻译它,还可以对其格式化,从而使您可以更好地控制代码。