2011-02-08 181 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

相關問題