将strings.xml资源值分配给MainActivity中的字符串失败

时间:2017-11-07 21:02:53

标签: java android xml string android-resources

我正在尝试本地化我的应用。因此,我将所有字符串移动到strings.xml。然后,我用字符串变量替换我的代码中的所有硬编码文本。但是,每当我尝试将资源值分配给我的字符串变量时,我都会收到运行时错误。

我的代码如下所示:

public class MainActivity extends AppCompatActivity {
    private final String MSG_STATUS =
    this.getResources().getString(R.string.status);
...
}

strings.xml如下所示:

<resources>
    <string name="status">My Status</string>
</resources>

这会导致以下错误:

  

java.lang.RuntimeException:无法实例化活动   ComponentInfo {} com.xxx/com.xxx.MainActivity:   java.lang.NullPointerException:尝试调用虚方法   'android.content.res.Resources android.content.Context.getResources()'   在空对象引用上

到目前为止我找到的所有例子都采用了非常相似的方法。因此,我很困惑为什么它不起作用。我想这可能与上下文有关。

1 个答案:

答案 0 :(得分:4)

因为在调用super之后,在onCreate初始化Activity之前,您无法访问资源。在此之前它没有正确设置。在调用构造函数之前,this指针也不会工作,并且不能用于静态初始化变量。

基本上,将所有代码移至onCreate。