Android: cambio de identificador drawable después de modificar recursos

Tengo una aplicación de Android que utiliza un componente de galería para elegir un icono y asignarlo a un botón.
El conjunto de iconos se encuentra en la carpeta res/drawable y se accede en la galería con el adaptador típico de la guía:

 private Integer[] Imgid = { R.drawable.icon_home, R.drawable.icon_home2, ... } 

Después de elegir un ícono, almacené la configuración en un db con id del botón y del dibujable.
Todos los trabajos realizados, pero he notado que si quiero agregar o modificar mi conjunto de iconos o recursos en general de mi aplicación, ids de los recursos de edad podría cambiar, por lo que las preferencias en el db se refiere a icono equivocado.
¿Hay una manera de forzar el viejo ID de la clase R por lo que no cambió en el futuro? ¿O hay otra manera de administrar el elemento de la galera de componentes con otro atributo que id? (Tal vez el nombre de la cadena y la reflexión?)

Gracias por adelantado

Puede almacenar el nombre del dibujable en la base de datos si no planea cambiarlo. getResourceEntryName devuelve el nombre del ID del recurso:

 Resources resources = getResources(); String name = resources.getResourceEntryName(R.drawable.icon); 

Y puede recuperar el identificador de recursos del nombre con getIdentifier :

 int resId = resources.getIdentifier(name, "drawable", "your.package.name"); 

No se puede usar int estático para el identificador de recurso, sin embargo, debe buscar dos métodos od Categoría de Resources :

GetIdentifier ()

GetresourceName ()

No debe confiar en los valores reales de los atributos R.drawable.* .
Cree sus propios identificadores en su lugar (por ejemplo, 1 corresponde a R.drawable.icon_home y 2 corresponden a R.drawable.icon_home2 )

Editar:
El nombre de la cadena y la reflexión deberían funcionar también, pero probablemente es un poco excesivo que solo tengas algunos iconos.

  • Android & libgdx - ¿Cómo usar los recursos sólo una vez para los proyectos de escritorio y Android?
  • Los identificadores de recursos de Android se asignan incorrectamente
  • Android, cadena de recursos no encontrado
  • XML dentro de un recurso de cadena de Android?
  • ¿Cambia el valor de R.string de forma programada?
  • Diferencia entre getString () y getResources.getString ()
  • Icono de la pantalla de mi tarjeta sd
  • ¿Puedes definir un filtro de intenciones de Android usando un recurso de cadena?
  • Android strings.xml resource - idioma árabe y cadenas de formato dinámico
  • Cómo cambiar los valores xml de recursos de cadena en Android mediante programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.