【发布时间】:2018-04-20 09:55:22
【问题描述】:
我正在尝试本地化我的应用程序。因此,我将所有字符串都移到了 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:无法实例化活动 组件信息{com.xxx/com.xxx.MainActivity}: java.lang.NullPointerException:尝试调用虚拟方法 'android.content.res.Resources android.content.Context.getResources()' 在空对象引用上
到目前为止,我发现的所有示例都采用了非常相似的方法。因此,我很困惑为什么它不起作用。我想这可能与上下文有关。
【问题讨论】:
-
在调用 super() 之后在 oncreate 方法中添加那行代码。
-
任何需要
Context的东西都必须在方法内实例化。 -
GetString 是 Activity 的一个方法。您可以省略“this.getResources”资格。
-
@Kuffs 不,不是。
标签: java android xml string android-resources