Obteniendo android.content.res.Resources $ NotFoundException: excepción incluso cuando el recurso está presente en Android

89

Por favor, avíseme en qué me equivoco para obtener el error.

Estoy creando una aplicación que tiene una de sus actividades solo en modo horizontal. Así que agregué lo siguiente en el archivo AndroidManifest.xml

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

He creado una carpeta como

/ res / layout-land

y agregue un diseño llamado see_today_landscape_layout en él.

y en onCreate()agregué lo siguiente

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

Pero cuando ejecuto mi aplicación, aparece el siguiente error

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

Crucé el check in R.java y tiene el recurso con el ID 7f03002b que está buscando la excepción y está presente allí ...

Limpié y reconstruí el proyecto, digamos 5 veces, pero el problema persiste.

El punto extraño es que esto funcionaba ayer y no funciona hoy. El código es el mismo.

Nik
fuente
¿A qué se refiere el ID de recurso # 0x7f03002b? Debe proporcionar el contenido del see_today_landscape_layout.xmlarchivo.
a.ch.
sí, se refiere a see_today_landscape_layout.xml según R.java
Nik
1
¿Posible duplicado del recurso
RDS
Tuve este problema cuando actualicé para usar compile 'com.android.support:appcompat-v7:23.4.0'si me quedo con el v7:22.2.0'trabajo
stephen

Respuestas:

36
  1. en eclipse, vaya a Proyecto> Limpiar ...
  2. seleccione su proyecto, luego presione OK
  3. relanzar la aplicación

si vuelve a suceder, elimine el archivo r.java. se generará automáticamente.

prakash
fuente
2
como mencioné antes ... borré las carpetas bin y gen y reconstruí la aplicación ... todavía no funciona ...
Nik
128
Si esto no solucionó su problema, ¿por qué obtuvo la marca de verificación?
IcedDante
1
¿Qué haces si esto sucede en la aplicación de lanzamiento?
Dinesh
220

Para mi condición la causa fue tomando intparámetro TextView. Déjame mostrarte un ejemplo

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

obtiene la información de error anterior.

Esto se puede solucionar convirtiendo inta algo Stringasí

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

Mientras escribe int, espera un recurso, no el texto que está escribiendo. Así que tenga cuidado al configurar un intcomo Stringen Android.

Yekmer Simsek
fuente
Gracias, funcionó, estaba tratando de hacer así: num2.setText (lotteryCharacters.charAt (2));, luego cambié a num2.setText (String.valueOf (lotteryCharacters.charAt (2))); ... ¡Y funcionó!
TharakaNirmana
1
Me pregunto cuál es la diferencia entre valueOf (i) y "" + i.
Peterb
Totalmente inesperado, ¡gran captura! Gracias
gunjot singh
1
¿Qué hay del código XAML, cómo puedo establecer el valor? Mi caso debería establecer el valor decimal para la propiedad en XAML
zquanghoangz
2
Gracias, la razón es que setText es un método sobrecargado que acepta tanto String como ID de recurso. Luego pasa un int busca el Id del recurso
abedfar
12

Dado que está configurando el diseño explícitamente, es posible que desee intentar colocarlo en la carpeta predeterminada / layout, no en / layout-land, ya que eso es si desea que Android maneje la rotación automáticamente por usted.

mbwasi
fuente
1
Si el teléfono está en vista vertical, estará en vertical, cuando gire el teléfono estará en horizontal. ¿Estás intentando que sea siempre un paisaje? Luego, lo que debe hacer es establecer la orientación de la actividad en horizontal en el archivo de manifiesto o en el código, consulte esta Pregunta stackoverflow.com/questions/2150287/…
mbwasi
Lo hice como mencioné en mi pregunta '<activity android: name = ". LandScapeImageActivity" android: screenOrientation = "landscape"> </activity>'
Nik
1
le falta la parte configchanges <activity android: screenOrientation = "landscape" android: configChanges = "Orientación | keyboardHidden" android: name = "abcActivty" />
mbwasi
9

Trate de mover su diseño xml de res/layout-landa res/layoutcarpeta

Ashish Kumar
fuente
a la carpeta de diseño?
Robert
1
de la carpeta res / layout-land >> res / layout
Ashish Kumar
También me pasó a mí, varias veces
Markos Evlogimenos
Moví mi xml de res/layout-sw600dpa res/layoutentonces funcionó .. Gracias por su ans ..
Shailendra Madda
2

Esto puede suceder debido a un idioma diferente en el teléfono para el cual su código no tiene el activo. Por ejemplo, su preferencia.xml se coloca en xml-en y está intentando ejecutar su aplicación en un teléfono que tiene francés seleccionado, la aplicación se bloqueará.

Arslan Mehboob
fuente
Cree siempre carpetas de activos predeterminadas y luego agregue las específicas de idioma u orientación. Aunque este podría o no ser el caso aquí :)
Ahmad Ali Nasir
2

Recibí este error por otra razón:

Tenía el archivo res/xml/data.xmly estaba tratando de cargarlo con una Resourcesclase como esta:

Resources.getSystem().getXml(R.xml.data);

Sin embargo, esto es incorrecto ya que el método Resources.getSystem()devuelve un objeto global de recursos compartidos que proporciona acceso solo a los recursos del sistema.

La forma correcta es la siguiente (desde el interior de la Actividad):

this.getResources().getXml(R.xml.data);
astasiak
fuente
¿Cómo acceder a recursos de funciones o clases de nivel superior que no heredan de Activity entonces?
Vivek Yadav
2

En mi caso, mi versión de Build Tools en mi build.gradle para el módulo de la aplicación estaba desactualizada en un proyecto antiguo. Actualizarlo solucionó el problema:

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

Se actualizó a la última versión de herramientas de compilación (25.0.1), se sincronizó el proyecto y todo volvió a estar bien.

Tash Pemhiwa
fuente
2

Verifique para asegurarse de que sus importaciones sean correctas. Tuve un problema similar en el que Rapuntaba al Rarchivo del sistema Android , no al local.

Ray Benjamin
fuente
1

Eliminé carpetas builddentro de un proyecto. Después de limpiarlo y reconstruirlo en Android Studio. Luego, se corrigieron los errores en build.gradle y AndroidManifest.

CoolMind
fuente
1

Esto también puede causar algunos problemas: accidentalmente uno de mis diseños estaba estacionado en la carpeta de recursos de mi tableta, así que recibí este error solo con el diseño del teléfono. El diseño del teléfono simplemente no tenía un archivo de diseño adecuado.

Trabajé nuevamente después de mover el archivo de diseño en la carpeta estándar correcta y una siguiente reconstrucción del proyecto.

wolwe
fuente
¿Podría proporcionar más información sobre esto? Stackoverflow.com/help/how-to-answer
Rich Benner
0

Asegúrese de que la R a la que apunta sea la correcta. Tuve un problema muy similar a este, donde Eclipse insertó una importación que apuntaba al archivo System R en lugar del proyecto. Me costó mucho rascarse la cabeza. Espero que esto ayude.

Rben
fuente
0

Tiene la orientación de la pantalla configurada en horizontal en su xml. Si ha utilizado eclipse para generar este archivo, se habría creado en la carpeta res / layout-land /. Pero cuando abra la actividad en el modo vertical, la aplicación buscará xml en la carpeta res / layout-port / o en la carpeta res / layout / normal. . Si no tenía xml para el modo vertical, su aplicación se bloqueará.

Prakash
fuente
0

He arreglado el de esta manera:

Cree una carpeta en el nombre de su directorio de recursos "drawable-nodpi" y luego mueva todos los recursos en este directorio desde otros directorios dibujables.

Ahora limpie su proyecto y luego reconstruya. Ejecutar de nuevo, con suerte, esta vez funcionará sin ninguna excepción de recurso no encontrado.

0xAliHn
fuente
Esto me indicó el camino correcto, pero tenga en cuenta esta publicación: stackoverflow.com/questions/24682094/…
Adrian
0

Recibí este error cuando intentaba acceder a los datos del paquete desde One Intent usando getInt ("ID").

Lo resolví usando getString ("ID").

De Activity1 tuve

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

En la Actividad B,

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}
ukurikiyeyesu dieudonne
fuente
1
Actualice su respuesta para explicar cómo esto resuelve el problema y mejora las respuestas aceptadas y votadas a favor de esta pregunta de hace 5 años. Ver: ¿Cómo escribo una buena respuesta ?
FluffyKitten
Considere agregar algunos detalles y una explicación para respaldar su respuesta para que sea útil para otros
Souvik Ghosh
0

Para mí, la invalidación de caché y el reinicio no funcionaron. Eliminé las carpetas .idea y .gradle. Si lo hace, no olvide que cosas como registros de compilación o algo así podrían desaparecer.

Bastian Springer
fuente