2011-02-08 113 views
3

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

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

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

什么可能导致这种情况,我能做些什么来解决这个问题?

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

回答

5

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

返回全局共享资源 对象,它提供只访问 系统资源(没有应用 资源),和未配置 当前屏幕(不能使用 尺寸单位,不在方向上不改变基于 等)。

因此,虽然R.array.xmlNetworkFiles是您的应用程序的已定义资源值,但您正在询问系统资源,但未找到它。

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

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

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

+0

如果该类不是活动或服务的子类,这将不起作用 – bla0009 2015-04-05 21:27:33

相关问题