¿Cómo obtengo la identificación de recursos de una imagen si sé su nombre?

¿Cómo obtengo la identificación de recursos de una imagen si sé su nombre (en Android)?

Con algo como esto:

String mDrawableName = "myappicon"; int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

También puedes probar esto:

 try { Class res = R.drawable.class; Field field = res.getField("drawableName"); int drawableId = field.getInt(null); } catch (Exception e) { Log.e("MyTag", "Failure to get drawable id.", e); } 

He copiado estos códigos fuente de la URL siguiente. Según las pruebas realizadas en esta página, es 5 veces más rápido que getIdentifier (). También me pareció más práctico y fácil de usar. Espero que te ayude también.

Enlace: Recuperación dinámica de recursos en Android

Ejemplo para un recurso de sistema público:

 // this will get id for android.R.drawable.ic_dialog_alert int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android"); 

alerta

Otra forma es remitir la documentación para la clase android.R.drawable .

Puede usar esta función para obtener una ID de recurso:

 public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException { try { return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName); } catch (Exception e) { throw new RuntimeException("Error getting Resource ID.", e) } } 

Entonces, si desea obtener una ID de recurso extraíble , puede llamar al método de esta manera:

 getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName()); 

(o de un fragmento):

 getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName()); 

Para un ID de recurso de cadena , puede llamarlo así:

 getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName()); 

etc …

Cuidado : arroja una RuntimeException si no puede encontrar la ID del recurso. Asegúrese de recuperar adecuadamente en producción.

Lee esto

Otro escenario que encontré.

String imageName = “Hello” y luego cuando se pasa a la función getIdentifier como primer argumento, pasará el nombre con terminación string null y siempre devolverá cero. Pase este imageName.substring (0, imageName.length () – 1)