Почему resources.getStringArray (int) выбрасывает исключение? - PullRequest
3 голосов
/ 09 февраля 2011

У меня есть вызов

Resources resources = Resources.getSystem();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);

, и я знаю, что этот массив ресурсов существует (поскольку я могу ссылаться на него с помощью автоматически сгенерированного R-файла), но все же он продолжает выдавать ResourceNotFoundException.

Что может быть причиной и что я могу сделать, чтобы это исправить?

Я использовал подобный код в другом месте для получения массива целых, но этот всегда терпит неудачув моих модульных тестах.

Ответы [ 2 ]

5 голосов
/ 09 февраля 2011

Это потому, что Resources.getSystem() возвращает неправильный объект ресурсов. Из документации:

Возврат глобальных общих ресурсов объект, который обеспечивает доступ только системные ресурсы (без приложения ресурсы), и не настроен для текущий экран (не может использовать единицы измерения, не меняются в зависимости по ориентации и т. д.).

Таким образом, хотя R.array.xmlNetworkFiles является определенным значением ресурса для вашего приложения, вы запрашиваете системный ресурс, и он не найден.

Вместо этого используйте getResource() (из подкласса Activity) или getContext().getResources() (из класса View).

2 голосов
/ 09 февраля 2011
Resources resources = getResources();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);

Попробуйте, я думаю, что это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...