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

标签 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: Unable to instantiate activity ComponentInfo{com.xxx/com.xxx.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

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

最佳答案

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

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

关于java - 将 strings.xml 资源值分配给 MainActivity 中的字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167395/

相关文章:

Java - 引用maven依赖 - Selenium Chromedriver

android - 如何将 Espresso 的 Intent 与 DocumentsProvider 结果结合使用

Android studio EditText 不加载 TextView

c# - 如何在 C# 中更改子节点中的属性?

c# - 从 xml 创建字典

java - session 属性缺少列表

java - Java中不可重置的 "flags"线程安全吗?

java - Hibernate 在一对多关系中检索错误的对象列表

android - 使用 OpenCV 访问移动立体相机

javascript - 通过javascript将用户选择的页面控制值写入xml文件中并存储在客户端计算机中