2011-12-04 144 views
0

所以我在編程,Java或Android開發中並不是這樣的新手,但是我遇到了一個奇怪的問題:我已經提出了一個相當先進的應用程序,並將其應用於市場。Android Resource not found異常

現在我有超過1000個安裝,並且我有大約4或5個關於ResourceNotFoundException的崩潰報告。最奇怪的是,它崩潰上線是

setContentView(R.layout.some_custom_layout) 

在代碼中我一直提到的資源由

someTxtView.setText(R.string.some_string) 

所以我如果我用疑惑

mContext.getResources().getDrawable(mContext.getResources().getIdentifier("some_string", "string", "my.example.package")); 

會墜毀消失了?

回答

2

我面臨同樣的問題,我通過創建名爲「layout-small」的佈局文件夾來修復它。

根據分辨率我只創建了2個文件夾「layout-large」和「layout-medium」。但很少有手機的分辨率較低,因此無法根據分辨率找到合適的資源。 Android OS根據分辨率呈現xml資源。它會查找所需文件夾中的資源。

95%具有匹配「layout-normal」文件夾的分辨率的Android手機。但仍然有分辨率較低的電話。因此發生了這個問題。

欲瞭解更多詳情:http://developer.android.com/guide/practices/screens_support.html

希望這有助於你的問題。

+0

我知道這是舊的,但花了至少3天在這問題。非常感謝你,你幫助了我。我從來沒有想過這麼簡單 – user3004826

0

如果您從活動的onCreate方法調用setContentView(R.layout.some_custom_layout),只要您的應用程序編譯(我假設它),您應該會很好。

AFAIK通過訪問您的字符串資源:

someTxtView.setText(R.string.some_string) 

是不是要走的路。你應該這樣做:

getContext().getResources().getString(R.string.some_string) 
+0

它編譯和最奇怪的是,在大多數情況下(99%)它不會崩潰,它很好。但是,由於這個錯誤,有百分之一的用戶無法啓動應用程序。我想知道可以做些什麼。 – Norbert

+0

但你有沒有嘗試以我提到的方式訪問你的字符串資源?我認爲你訪問你的字符串的方式可能是錯誤的。 –

+0

字符串訪問示例只是一個例子,我還沒有看到一個報告,它實際上在那裏崩潰。我的意思是說,我使用資源ID的每一處都使用了「R」 – Norbert

0

除了

setContentView(R.layout.some_custom_layout); 

使用

setContentView(yourpackagename.R.layout.some_custom_layout); 

,幫助我很多次嘗試。

+0

從來沒有想過,我會嘗試一下,看看是否有幫助。謝謝。 – Norbert

+0

NP諾伯特......:DA很多次幫助了我...... – Markonato

+2

這將有助於唯一的一次是,如果你已經導入android.R而不是你的PackageName.R – Sojurn

0

我有一個建議。你在你的佈局中使用的Android secific資源,如可繪製或東西,例如

機器人:研究背景= 「@機器人:可繪製/ some_android_drawable」

也許有些供應商不提供一些資源與他們的固件,所以你的應用崩潰。 例如this issue

0
someTxtView.setText(R.string.some_string) 

在那裏你設置整數值爲文本。它不正確,因爲它在這個值上搜索resousre。你必須寫

someTextView.setText(getResources().getText(R.string.blabla)); 
相關問題