¿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;
- Portar 2d juego de azulejos basado en iPhone para Android.
- ¿Cuándo es exactamente seguro usar clases anónimas internas?
- ¿Cómo imprimir desde la impresora térmica en Android?
- Conjunto de datos para almacenar objetos en java
- OkHttp en android para realizar solicitudes de red
- ¿Cómo obtengo el código de país de un usuario en Android?
- LibGDX: Crear una rejilla para el juego de mesa
- Android, subir una foto para alojar en imgur programatically
- Cuántas llamadas de función causarán desbordamiento de pila
- ¿Cómo puedo acceder a la cámara en teléfonos Android?
- La mejor manera de unir tablas usando sqlite en android
- Formas de crear objetos JSON en Java
- Qué es "serviceAccountKey.json" que se refiere en el tutorial de notificaciones de dispositivo a dispositivo de Firebase
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());
- Android Eclipse: Traceview, simplemente no lo entiendo
- ¿Cómo agregar un interruptor a la barra de acción de Android?