¿Cómo comprobar con gracia si un recurso bruto no existe?
Tengo un método en mi clase llamado juego y quiero jugar que reproduce un archivo de audio. El archivo que se reproduce depende del valor actual del audioIndex de las clases. Básicamente, hay un interruptor como este:
int rId; switch (audioIndex){ case 0: rId = R.raw.e0.wav; break; case 1: rId = R.raw.e1.wav; break; default: rId = R.raw.error.wav; break; }
Después del switch quiero verificar si el rId es válido antes de pasarlo a MediaPlayer.create (this, rId). Parece que create no lanza una excepción si el identificador no existe o no se puede abrir. ¿Así que debo comprobarlo antes de pasarlo?
- Android: cómo acceder a la tabla de contactos de SIM con el SDK?
- NullPointerException al iniciar sesión con Facebook SDK y ParseFacebookUtils
- Leer y mostrar texto de mensaje entrante android
- El contexto de la aplicación devuelve null cuando se utiliza getFilesDir ()
- Tablas personalizadas de Chrome Oauth2 Flow
¿Cómo manejar esto con gracia? Hasta ahora he asumido que el rId siempre será correcto, pero me gustaría comprobarlo para asegurarse.
- Mobile Vision barcodeScanner: ¿Por qué SurfaceView no actualiza CameraSource?
- Cómo retrasar un bucle en android sin usar thread.sleep?
- NestedScrollView no juega con Recyclerview dentro
- Android - Extensiones de Google Maps - IllegalArgumentException
- IllegalArgumentException: Unknown Contenido de URL: // CONTENT
- Android - Crash al generar un número aleatorio
- Renderizar una pequeña región de mapa de bits grande consume mucho tiempo
- Impresión Uso del problema con el cable USB
Puede obtener el identificador de recurso del nombre de archivo con este método . Devolverá 0 si no es un ID de recurso válido. Vea esta pregunta para más información.
El proyecto no debe compilar si el recurso no existe, ya que R.resourcetype.resourcename no existirá en R.java. Esto sólo es útil si no sabe qué recursos tendrá en tiempo de ejecución.
Te sugiero que utilices mi método para obtener un ID de recurso. Si hace un manejo de excepciones simple allí, verá que si su recurso no existe, será lanzado. Que resolvería su problema con gracia.
Aquí está el código:
/** * @author Lonkly * @param variableName - name of drawable, eg R.drawable.<b>image</b> * @param с - class of resource, eg R.drawable, of R.raw * @return integer id of resource */ public static int getResId(String variableName, Class<?> с) { Field field = null; int resId = 0; try { field = с.getField(variableName); try { resId = field.getInt(null); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return resId; }
- No se puede actualizar el precio de una aplicación en Google Play Store.
- Cómo limitar el usuario en DatePicker a sólo puede elegir la fecha antes today_date – 18 años