renombrar - how to get app id android
Android: cambio de id dibujable después de que los recursos se modifiquen (3)
Tengo una aplicación de Android que usa un componente de galería para elegir un ícono y asignarlo a un botón.
El conjunto de iconos se encuentra en la carpeta res/drawable
y se accede a él 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, guardé la configuración en un db con id del botón y del dibujable.
Todos los trabajos realizados, pero me he dado cuenta de que si quiero agregar o modificar mi conjunto de iconos o los recursos en general de mi aplicación, los ID de los recursos anteriores podrían cambiar, por lo que las preferencias en el DB se refieren al icono incorrecto.
¿Hay alguna forma de forzar la identificación anterior de la clase R para que no cambien en el futuro? ¿O hay otra forma de administrar el elemento de la galera componente con otro atributo que id? (tal vez el nombre de la cadena y la reflexión?)
Gracias por adelantado
No debe confiar en los valores reales de los atributos R.drawable.*
.
Cree sus propios ID 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 es probable que sea un poco exagerado, solo tienes unos pocos iconos.
No puede usar static int para el identificador de recursos, sin embargo, debe ver dos métodos de la clase Resources
:
Puede almacenar el nombre del dibujable en la base de datos si no planea cambiar eso. getResourceEntryName
devuelve el nombre de la ID del recurso:
Resources resources = getResources();
String name = resources.getResourceEntryName(R.drawable.icon);
Y puede recuperar el ID de recurso del nombre con getIdentifier
:
int resId = resources.getIdentifier(name, "drawable", "your.package.name");