ten sposób mogę uzyskać dostęp do zasobów z wewnątrz metod statycznych. Może nie idealnie, ale.
Po pierwsze, rozszerzenie stosowania i ustawić jakąś publiczną pole statyczne (S) i utworzyć metodę, aby je zainicjować:
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);
}
}
I w moim manifestu zarejestrować rozszerzony Zastosowanie:
<application
android:name=".MyApp"/>
W mojej aktywności początkowej (MainActivity) wykonuję połączenie inicjujące statyczne zasoby:
@Override
protected void onCreate(Bundle savedInstanceState) {
MyApp.initResources(this);
}
Następnie wszędzie w projekcie, po MainActivity.onCreate (Bundle b) prowadzi, można wywołać metody statyczne, które uzyskują dostęp do swoich określonych zasobów statycznych:
public static void printAppName() {
Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
można to zły pomysł. Jeśli przechowujesz odniesienia do kontekstów, możesz spowodować wyciek pamięci – Falmarri
Co spowodowało, że uważasz, że proponuję zapisać odniesienie do kontekstu? –
@Falmarri: zawsze możesz użyć 'getApplicationContext()', co wtedy poprawiłoby cały czas życia całej aplikacji –