Вы не можете позвонить getString
, пока ваша активность не будет инициализирована.Это потому, что getString
совпадает с context.getResources().getString()
.И контекст не инициализирован.
Таким образом, в принципе, вы не можете назначать значение статическим переменным таким образом.
Но есть способ использовать строки ресурсов в ваших статических переменных.Для этого создайте свое приложение (см. this и this ), а затем получите оттуда контекст.Вот краткий пример:
<manifest ...>
...
<application android:name="com.mypackage.MyApplication" ... >
...
</application>
...
</manifest>
Затем создайте MyApplication.java
файл:
public class MyApplication extends Application
{
private static MyApplication s_instance;
public MyApplication ()
{
s_instance = this;
}
public static Context getContext()
{
return s_instance;
}
public static String getString(int resId)
{
return getContext().getString(resId);
}
}
И затем используйте его для получения строкового ресурса:
private final String BUILDING_NAME = MyApplication.getString(R.string.building_name);
YouМожно даже сделать это пихтом статических полей.