¿Cómo puedo comprobar si existe un recurso en Android?

¿Hay una forma construida de comprobar para ver si existe un recurso o me he dejado haciendo algo como lo siguiente:

boolean result; int test = mContext.getResources().getIdentifier("my_resource_name", "drawable", mContext.getPackageName()); result = test != 0; 

3 Solutions collect form web for “¿Cómo puedo comprobar si existe un recurso en Android?”

De acuerdo con el javadoc usted no necesita el try catch: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String, % 20java.lang.String% 29

Si getIdentifier() devuelve cero, significa que no existe tal recurso.
También 0 – es un identificador de recurso ilegal.

Así que su variable booleana de resultado es equivalente a (test != 0) .

De todos modos su try / finalmente es malo, porque todo lo que hace que el resultado de la variable a false, incluso si la excepción se lanza desde el cuerpo de intentar: mContext.get..... y luego sólo "retitula" la excepción después de salir De la cláusula final. Y supongo que no es lo que quieres hacer en caso de excepción.

El bloque try / catch en tu código es totalmente inútil (y equivocado), ya que ni getResouces() ni getIdentifier(...) lanzan una excepción.

Por lo tanto, getIdentifier(...) ya le devolverá todo lo que necesita. De hecho, si devuelve 0, entonces el recurso que está buscando no existe. De lo contrario, devolverá el identificador de recurso asociado ( "0 no es un ID de recurso válido" , de hecho).

Aquí el código correcto:

 int checkExistence = mContext.getResources().getIdentifier("my_resource_name", "drawable", mContext.getPackageName()); if ( checkExistence != 0 ) { // the resouce exists... result = true; } else { // checkExistence == 0 // the resouce does NOT exist!! result = false; } 

En caso de que alguien se esté preguntando, el "my_resource_name" en

 int checkExistence = mContext.getResources().getIdentifier("my_resource_name", "drawable", mContext.getPackageName()); 

es en realidad

 String resourceName = String.valueOf(R.drawable.my_resource_name); int checkExistence = mContext.getResources().getIdentifier(resourceName , "drawable", mContext.getPackageName()); 
  • Cambiar Google Place Picker Appbar Text Color
  • Android - obteniendo clave hash para la integración de Facebook
  • AVD No se puede probar ninguna aplicación usando AVD
  • Java se inició pero devolvió exit code = 13 eclipse
  • ¿El mejor método para medir el tiempo de ejecución en Android?
  • ¿Qué hay de malo en esta cadena de formato?
  • Lanzar null pointerException en Timer.Schedule ();
  • Cómo cambiar la orientación de bloqueo en Android?
  • Extraer el archivo AndroidManifest.xml de apk usando sólo Java
  • Cómo eliminar MenuItems de menú de forma programática?
  • Cómo capturar una Firebase Auth excepciones específicas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.