在 onCreate 方法之外从 xml 文件获取字符串资源
Getting string resource from xml file outside onCreate method
我正在尝试使用 string.xml
文件中的 String
作为键值对中的键。但是,当我尝试在 onCreate()
方法之前声明变量时,程序崩溃了。因此,如果我使用以下代码,则会出现错误:
public class MainActivity extends ActionBarActivity {
String MAX_SQUAT = getResources().getString(R.string.max_squat);
protected void onCreate(Bundle savedInstanceState) {
//blah blah blah
}
}
而当我在 onCreate()
方法中声明 MAX_SQUAT
时,没有问题。我想在 onCreate()
方法之外声明它,所以我不需要在其他方法中定义它
你需要一个Context
来得到resources
(你可以看到in the DocsgetResources()
是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()
中对其进行初始化将允许您在整个 class 期间使用它并防止其崩溃。
我正在尝试使用 string.xml
文件中的 String
作为键值对中的键。但是,当我尝试在 onCreate()
方法之前声明变量时,程序崩溃了。因此,如果我使用以下代码,则会出现错误:
public class MainActivity extends ActionBarActivity {
String MAX_SQUAT = getResources().getString(R.string.max_squat);
protected void onCreate(Bundle savedInstanceState) {
//blah blah blah
}
}
而当我在 onCreate()
方法中声明 MAX_SQUAT
时,没有问题。我想在 onCreate()
方法之外声明它,所以我不需要在其他方法中定义它
你需要一个Context
来得到resources
(你可以看到in the DocsgetResources()
是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()
中对其进行初始化将允许您在整个 class 期间使用它并防止其崩溃。