Así es como puedo acceder a los recursos desde el interior de los métodos estáticos. Tal vez no es ideal, pero.
En primer lugar, extiendo aplicación y establecer algún campo static (s), y crear un método para inicializar ellos:
public class MyApp extends Application {
// static resources
public static String APP_NAME;
public static void initResources(Context context) {
APP_NAME = context.getResources().getString(R.string.app_name);
}
}
Y en mi manifiesto que registrar la aplicación extendida:
<application
android:name=".MyApp"/>
En mi actividad de arranque (MainActivity), hago una llamada para inicializar los recursos estáticos:
@Override
protected void onCreate(Bundle savedInstanceState) {
MyApp.initResources(this);
}
Entonces
en cualquier lugar de su proyecto, después de MainActivity.onCreate (Bundle b) ha de ejecución, puede llamar a métodos estáticos que tienen acceso a sus recursos estáticos especificados:
public static void printAppName() {
Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
Esto puede ser una mala idea. Si está almacenando referencias a contextos, podría causar una pérdida de memoria – Falmarri
¿Qué le hizo pensar que sugiero almacenar una referencia de contexto? –
@Falmarri: siempre puede usar 'getApplicationContext()', que luego validaría toda la vida útil de la aplicación –