为什么resources.getStringArray(int)会抛出异常?

时间:2011-02-08 21:46:38

标签: java android exception resources

我打电话给

Resources resources = Resources.getSystem();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);

我知道这个资源数组存在(因为我可以用自动生成的R文件引用它)但是它继续抛出ResourceNotFoundException

可能导致此问题的原因以及如何解决此问题?

我在其他地方使用了类似的代码来检索一个int数组,但是这个代码总是在我的单元测试中失败。

2 个答案:

答案 0 :(得分:5)

这是因为Resources.getSystem()返回错误的Resources对象。来自文档:

  

返回全局共享资源   仅提供访问权限的对象   系统资源(没有应用程序   资源),并没有配置   当前屏幕(不能使用   尺寸单位,不会改变   在方向等)。

因此虽然R.array.xmlNetworkFiles是您的应用程序的已定义资源值,但您要求的是系统资源并且找不到它。

使用getResource()(来自Activity子类)或getContext().getResources()(来自View类)。

答案 1 :(得分:2)

Resources resources = getResources();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);

试试这个,我认为这可以解决您的问题。