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);