Я думал, что буду классным и использовать файл string.xml для определения некоторых постоянных строк для вещей как сообщения об исключениях. В strings.xml я совершил нападки, Добавляют, выбрал опцию "String" (не 'Массив строк'), затем дал ему имя и значение. Я был удивлен видеть, что этот код не работает:
throw new Exception(R.string.MyExceptionMessage);
И это перестало работать потому что R.string. MyExceptionMessage имеет на самом деле интервал типа. Я могу проверить что тип путем взгляда в R.java. Что я пропускаю?
Все в классе R
является ссылкой, поэтому он просто определен как int
.
Если ваш код запущен внутри - или имеет доступ к - Android Context
, вы можете вызвать context.getString(R.string. my_exception_message)
, чтобы получить фактическое значение String
.
Или, для таких вещей, как строки исключений, которые не требуют перевода и поэтому, строго говоря, не нуждаются в определении в .xml файле ресурса Android, вы можете хранить эти строки в виде констант в каком-нибудь StringConstants
интерфейсе. Таким образом, вы можете обратиться к строкам внутри классов утилит, которые могут не иметь доступа к Context
.