Questo è come mi accedere alle risorse da dentro metodi statici. Forse non è l'ideale, ma.
In primo luogo, estendere l'applicazione e impostare un certo campo statico pubblico (s), e creare un metodo per inizializzare loro:
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);
}
}
E nella mia palese io registrare l'applicazione estesa:
<application
android:name=".MyApp"/>
Nella mia attività di avviamento (MainActivity), faccio una chiamata per inizializzare le risorse statiche:
@Override
protected void onCreate(Bundle savedInstanceState) {
MyApp.initResources(this);
}
Poi ovunque nel progetto, dopo MainActivity.onCreate (Bundle b) è stato eseguito, è possibile chiamare i metodi statici che accedono le risorse statiche specificate:
public static void printAppName() {
Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
questa può essere una cattiva idea. Se stai memorizzando riferimenti a contesti potresti causare una perdita di memoria – Falmarri
Cosa ti ha fatto pensare che io suggerisca di memorizzare un riferimento al contesto? –
@Falmarri: puoi sempre usare 'getApplicationContext()', che quindi valida tutta la durata dell'app –