Android: Acceso a recursos sin una actividad o referencia de contexto
Estoy publicando esta pregunta con la esperanza de que pueda obtener algún tipo de respuesta definitiva.
¿Es realmente imposible acceder a los recursos sin una referencia de actividad o contexto. Pasar alrededor de tales referencias cuando todo lo que se requiere es acceder a algunos valores o activos o cadenas que no tienen nada que ver con la interfaz de usuario hace que el código demasiado complicado.
- Obtener recurso Drawable desde dentro de DefaultHandler
- Android: ¿Cómo combinar Spannable.setSpan con String.format?
- ¿Cómo mostrar una página HTML desde la carpeta raw en res con android Webview?
- Android: las carpetas de destino res para depurar en eclipse
- Android - getIdentifier devuelve siempre 0 (biblioteca + aplicación)
Además de todas esas referencias pendientes potenciales.
También esto arruina completamente varios patrones de diseño tales como singletons, teniendo que proporcionar parámetros al conseguir la instancia.
Poner una referencia estática
Así que hay una manera o no toda la comunidad acaba de vivir con este problema.
- ¿Por qué es imposible acceder a los recursos de manera estática?
- Programación de Scala para Android
- ¿Cómo enlazar activos de android a escritorio en libgdx?
- ¿Se puede añadir subcarpeta al diseño en el proyecto Eclipse Android?
- Android: ¿Cómo agregar R.raw al proyecto?
- Hay alguna manera de encontrar el identificador de recursos de dibujable
- Múltiples iconos en Honeycomb
- No se puede obtener recursos de la aplicación Android
Sus recursos se agrupan en un contexto, es un hecho y no se puede cambiar eso.
Esto es lo que puede hacer:
Amplíe la Application
, obtenga el contexto de la aplicación y utilícelo como auxiliar estático.
public class App extends Application { private static Context mContext; public static Resources getResources() { return mContext.getResources(); } public void onCreate() { super.onCreate(); mContext = getApplicationContext(); } }
Su manifiesto:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="your.package.path.to.App">
Haga que su clase de Application
singleton y use eso. Es un Context
. Todos los recursos están vinculados a su aplicación, por lo que necesita una referencia de Context
. Puede cargar previamente cadenas, etc. en una clase singleton si no desea cargarlas dinámicamente.
- Android: Crash: Línea de archivo XML binario: Error al inflar la clase (usando SurfaceView)
- Adaptador genérico para muchos tipos de fila de presentación de listview en android