Разница между R.string.xxx и getString (R.string.xxx)? - PullRequest
0 голосов
/ 26 марта 2012

В чем разница между двумя способами получения строки из ресурсов:

setPositiveButton(R.string.some_string);

ИЛИ

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

?

В обоих случаях я получаю одно и то жерезультат.

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

setPositiveButton имеет несколько перегрузок, которые принимают различные типы аргументов.

При вызове

setPositiveButton(R.string.some_string);

Вы говорите своему приложению установить текст положительных кнопок равным строке, на которую ссылаетсяидентификатор вашего ресурса "some_string".

Где, как

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

Вы выбираете значение String для "some_string" и затем присваиваете его своей положительной кнопке;

Они работают так же, потому что1-й метод делает для вас часть getString (R.string.some_string)

1 голос
/ 26 марта 2012
R.string.some_string

- это публичное конечное статическое int, которое является фиксированным идентификатором для конкретной строки в вашем файле R.java.Это генерируется автоматически.

getString(R.string.some_string)

возвращает строку, на которую ссылается выше, путем чтения файла R.java.

Это зависит от реализации

setPositiveButton(String)

и

setPositiveButton(int)

какая внутренняя разница, как при проверке ошибок.

0 голосов
/ 06 марта 2019

Другое отличие состоит в том, что с 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");

И в английской версии это будет Привет, Джон Доу .Но в испанской версии это будет Hola, John Doe .

Не только переведет его, но отформатирует и даст вам больше контроля над вашим кодом.

...