我正在尝试使用String
文件中的string.xml
作为键值对中的键。但是,当我尝试在onCreate()
方法之前声明变量时,程序崩溃了。因此,如果我使用以下代码,我会收到错误:
public class MainActivity extends ActionBarActivity {
String MAX_SQUAT = getResources().getString(R.string.max_squat);
protected void onCreate(Bundle savedInstanceState) {
//blah blah blah
}
}
然而,当我在MAX_SQUAT
方法中声明onCreate()
时,没有问题。我想在onCreate()
方法之外声明它,所以我不需要在其他方法中定义它
答案 0 :(得分:3)
您需要Context
才能获得resources
(正如您所看到的那样in the Docs getResources()
是Context
的方法。由于Context
之前onCreate()
不可用,因此您无法执行此操作。
您可以在 onCreate()
之前声明变量,但是在调用 onCreate()
后之前,您无法对其进行初始化。
实施例
public class MainActivity extends ActionBarActivity {
String MAX_SQUAT;
protected void onCreate(Bundle savedInstanceState) {
// super call, set content view
// now you can get the string from strings.xml safely
MAX_SQUAT = getResources().getString(R.string.max_squat);
}
以这种方式将其声明为成员变量,但在onCreate()
中初始化它将允许您在整个班级中使用它并防止崩溃。