【发布时间】:2011-06-29 15:57:38
【问题描述】:
我在从 Android 中的 strings.xml 资源调用字符串值时遇到问题。 strings.xml 文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name1">contact_name1</string>
<string name="phone1">contact_phone1</string>
</resources>
而调用字符串值的代码是:
private final String NAME1 = getString(R.string.name1);
private final String PHONE1 = getString(R.string.phone1);
我从我的main.java 那里调用我extend Activity 的字符串,所以我有上下文。问题是,当我运行应用程序(物理设备 (EVO) 或模拟器(API 级别 5 - 8)时,我在第一个 getString() 调用所在的行得到一个 NullPointerException。我已经浏览过 Google 的文档,这里和 AndDev.org 上的一些帖子,最终结果没有改变。在我拔掉所有头发之前,有人请告诉我出了什么问题!?strings.xml 文件位于标准位置 (@987654330 @directory) 与应用程序的其余部分在同一个包中。
【问题讨论】:
-
@Nic Strong 你的意思是来自 LogCat?还是设备中的原始文本文件?
-
确保您没有无意中导入 android.R(或者,如果您这样做了,请使用您的包名完全限定 R)。
-
查看sugarynugs的回答。在静态初始化器之外调用类体中的方法等同于将它们放在构造器中,因为 Java 编译器将简单地为这些行生成字段初始化代码,并将它们按照声明的顺序插入到构造器中。但是,由于此时上下文尚未完全初始化,您将看到错误行为。因此,在
onCreate中执行所有需要Context的初始化。