Java 为什么resources.getStringArray(int)会引发异常?

Java 为什么resources.getStringArray(int)会引发异常?,java,android,exception,resources,Java,Android,Exception,Resources,我有个电话 Resources resources = Resources.getSystem(); String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles); 我知道这个资源数组存在(因为我可以用自动生成的R文件引用它),但它仍然会抛出ResourceNotFoundException 是什么原因导致了这种情况,我可以做些什么来修复这种情况? 我在其他地方使用了类似的代码来检索int数组,但是在我的单元

我有个电话

Resources resources = Resources.getSystem();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);
我知道这个资源数组存在(因为我可以用自动生成的R文件引用它),但它仍然会抛出
ResourceNotFoundException

是什么原因导致了这种情况,我可以做些什么来修复这种情况?


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

这是因为
Resources.getSystem()
返回了错误的Resources对象。从文件中:

返回一个全局共享资源 对象,该对象仅提供对 系统资源(无应用程序) 资源),并且未为配置 当前屏幕(无法使用 标注单位,不根据需要更改 关于方向等)

因此,尽管
R.array.xmlNetworkFiles
是应用程序定义的资源值,但您请求的是系统资源,但找不到

改为使用
getResource()
(来自活动子类)或
getContext().getResources()
(来自视图类)


试试这个,我想这可能会解决您的问题。

如果类不是活动或服务的子类,这将不起作用
Resources resources = getResources();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);