Android-ресурс не найден исключение - PullRequest
0 голосов
/ 04 декабря 2011

Так что я не новичок в программировании, разработке на Java или Android, но у меня возникла странная проблема: я сделал приложение, довольно продвинутое, и оно есть на рынке.

На данный момент у меня более 1000 установок, и у меня есть около 4 или 5 отчетов о сбоях для ResourceNotFoundException. Самое странное, что линия, на которой он падает, находится на

setContentView(R.layout.some_custom_layout)

В коде я всегда ссылаюсь на ресурсы

someTxtView.setText(R.string.some_string)

Так что мне интересно, если бы я использовал

mContext.getResources().getDrawable(mContext.getResources().getIdentifier("some_string", "string", "my.example.package"));

Авария исчезнет?

Ответы [ 5 ]

2 голосов
/ 10 августа 2012

Я столкнулся с той же проблемой, и я исправил ее, создав папку макетов с именем "layout-small".

На основании разрешений я создал только 2 папки "layout-large" и "layout-medium". Но немногие телефоны имеют более низкое разрешение, он не находит надлежащие ресурсы в соответствии с разрешением. Android OS отображает XML-ресурсы в соответствии с разрешением. Идет и находит ресурсы в нужных папках.

95 +% телефонов Android с разрешением, соответствующим папке «layout-normal». Но все же есть телефоны с более низким разрешением. Отсюда и эта проблема.

Для более подробной информации: http://developer.android.com/guide/practices/screens_support.html

Надеюсь, это поможет вашей проблеме.

0 голосов
/ 13 февраля 2014
someTxtView.setText(R.string.some_string)

Там вы задаете целочисленное значение для текста. Неправильно, потому что он ищет ресурс по этому значению. Вы должны написать

someTextView.setText(getResources().getText(R.string.blabla));
0 голосов
/ 04 декабря 2011

За исключением

setContentView(R.layout.some_custom_layout);

попробуйте использовать

setContentView(yourpackagename.R.layout.some_custom_layout);

, это помогло мне много раз.

0 голосов
/ 04 декабря 2011

У меня есть одно предложение. Используете ли вы в своих макетах Android специальные ресурсы, такие как рисованные или что-то, например

андроида: Backgroud = "@ андроид: рисуем / some_android_drawable"

Возможно, некоторые поставщики не предоставляют некоторые ресурсы с их прошивкой, поэтому ваше приложение падает. например эта проблема

0 голосов
/ 04 декабря 2011

Если вы вызываете setContentView(R.layout.some_custom_layout) из метода onCreate в Activity, вам будет хорошо, пока ваше приложение компилируется (и я предполагаю, что это так).

AFAIK получает доступ к вашим строковым ресурсам через:

someTxtView.setText(R.string.some_string)

не путь.Вы должны сделать это:

getContext().getResources().getString(R.string.some_string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...