Получение android.content.res.Resources $ NotFoundException: исключение, даже если ресурс присутствует в Android - PullRequest
73 голосов
/ 06 февраля 2012

Пожалуйста, дайте мне знать, где я иду не так, чтобы получить ошибку.

Я создаю приложение, в котором одно из его действий должно быть только в ландшафтном режиме. Поэтому я добавил следующее в AndroidManifest.xml file

<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

Я создал папку, как

/ RES / макет земля

и добавьте в него макет see_today_landscape_layout.

и в onCreate() я добавил следующее

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

Но когда я запускаю свое приложение, я получаю следующую ошибку

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

Я прошел проверку R.java , и у него есть ресурс с идентификатором 7f03002b, который ищет исключение, и он там присутствует ...

Я очистил и перестроил проект, скажем, 5 раз, но проблема все равно возникает.

Странно, что это работало вчера, а сегодня не работает. Код такой же.

Ответы [ 17 ]

200 голосов
/ 08 мая 2013

Для моего состояния причина принимала параметр int для TextView. Позвольте мне показать пример

int i = 5;
myTextView.setText(i);

получает информацию об ошибке выше.

Это можно исправить, преобразовав int в String следующим образом

myTextView.setText(String.valueOf(i));

Когда вы пишете int, он ожидает ресурс, а не текст, который вы пишете. Поэтому будьте осторожны при установке int как String в Android.

37 голосов
/ 06 февраля 2012
  1. в затмении, перейдите в Проект> Очистить ...
  2. выберите свой проект, затем нажмите OK
  3. перезапустить приложение

если это произойдет снова, удалите файл r.java. он будет генерироваться автоматически.

11 голосов
/ 06 февраля 2012

Поскольку вы настраиваете макет явно, вы можете попробовать поместить его в папку по умолчанию / layout, а не в / layout-land, поскольку это если вы хотите, чтобы Android автоматически обрабатывал вращение для вас.

8 голосов
/ 26 февраля 2015

Попробуйте переместить макет XML из res/layout-land в res/layout папку

2 голосов
/ 06 апреля 2013

Проверьте, чтобы убедиться, что ваш импорт правильный.У меня была похожая проблема, когда R указывал на системный файл Android R, а не на мой локальный файл.

2 голосов
/ 01 ноября 2014

Это может произойти из-за другого языка в телефоне, для которого у вашего кода нет ресурса. Например, ваш файл preference.xml помещен в xml-en, и вы пытаетесь запустить приложение на телефоне, для которого выбран французский язык, приложение будет аварийно завершено.

2 голосов
/ 11 мая 2018

Я столкнулся с тем же самым сегодня. В моем случае я считывал целочисленное значение из моей базы данных Firebase и передавал его в setText () TextView без преобразования его в целое число. Так что просто используйте:

textview.setText(intvalue + "");

или

textView.setText(String.valueOf(intValue));
2 голосов
/ 23 января 2017

В моем случае моя версия Build Tools в моем build.gradle для модуля приложения была устаревшей в старом проекте.Обновление исправило проблему:

android {
    ...
    buildToolsVersion "19.0.1"
    ...

Обновлена ​​до последней версии инструментов сборки (25.0.1), синхронизирована с проектом, и все снова в порядке.

1 голос
/ 05 июля 2017

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

currectText.setText(progress);

но если параметр не является строкой, он даст вам

android.content.res.Resources$NotFoundException: String resource ID 

поэтому укажите параметр как строку. просто используйте оператор «+»

currectText.setText(""+progress);

Я передаю int в методе setText, только что преобразованном в строковое решение проблемы

2-й вариант, если это Integer

currectText.setText(String.valueOf(progress));
1 голос
/ 04 июня 2016

Это также может вызвать некоторые проблемы: Случайно один из моих макетов был припаркован в папке ресурсов планшета, поэтому я получил эту ошибку только с макетом телефона. В макете телефона просто не было подходящего файла макета.

Я снова работал после перемещения файла макета в правильную стандартную папку и перестроения следующего проекта.

...