Cómo evitar que algunos valores en R.java cambien al agregar/actualizar recursos
-
13-12-2019 - |
Pregunta
Necesito almacenar el enlace a la imagen que el usuario ha elegido.Las fuentes de las imágenes son archivos, íconos de contacto y elementos de diseño de recursos (necesito elementos de diseño ya que proporciono diferentes imágenes para diferentes resoluciones/densidades).Para fines de unificación, lo almaceno en URI y, en consecuencia, este URI puede estar apuntando a un archivo (file://
), a proveedor de contenido o para recurso (android.resource://...
).Así es como se ve el URI que apunta al elemento dibujable con id=2130837534:
android.resource://my.packagename/2130837534
Funciona bien a menos que los identificadores en R.java
son regenerados.Entonces, ¿hay alguna manera de evitar que el SDK cambie algunas de las R.java
valores de identificación?
Solución
No, no puedes ni deberías.Si puede describir su problema claramente, es posible que haya alguna otra solución.
Guarde los nombres de sus recursos en un archivo de esta manera.
icon_profile_1 icon_profile_2
Y luego, cuando necesite el ID del recurso, haga esto.
int resID = getResources().getIdentifier("icon_profile_1", "drawable","your_package_name");
Chequea aquí(java.lang.String, java.lang.String, java.lang.String)
Otros consejos
Como R.java se genera automáticamente, no se puede restringir su funcionamiento, ya que volverá a generarse automáticamente cuando se limpie o compile su proyecto.
Esto es imposible en Android porque R.java está autogenerado y no puedes hacer nada al respecto.