[Android][Fatal Exception] android.content.res.Resources$NotFoundException 問題及解決方法

問題1描述

讀取sharePreferences的時候遇到了一個EXCEPTION,具體如下:


問題1解決方法

如上圖所示,在R.java裏找到這個ID對應的資源名,發現原來是我代碼中的數據類型寫錯了,期待的是一個Int,但是我給的是一個String,代碼及修改如下:

int defaultValue = getResources().getInteger(R.string.defaultIntValue); // 使用這個defaultIntValue就是錯的,原因是我在string.xml給它添加的標籤是<string>,雖然值是整型的,但是數據類型錯了
int defaultValue = getResources().getInteger(R.integer.defaultIntValue); // 這裏的integer常量是自己後來在string.xml添加的,使用的標籤是<Integer>

問題2描述

使用Intent轉到另一個activity中,activity裏面帶一個textView用來顯示結果,但實際測試時只要點擊跳轉按鈕程序就掛了,這個resource ID在R.java裏面還找不到,暈@@


問題2解決方法

在Android Monitor中找到“Caused by”的上下文,可以看到離這行最近的我的包所執行的是如下這行代碼:
mResult.setText(valueRetrieved);

其中的valueRetrieved:
int valueRetrieved = sharedPref.getInt(keyToRetrive, defaultValue);

查看setText()的源碼,又是數據類型用錯了 ==!
public final void setText(@StringRes int resid) {
        setText(getContext().getResources().getText(resid));
    }

將int轉換爲String,然後就可以正常運行了:
mResult.setText(Integer.toString(valueRetrieved));

基礎問題,願以後不再犯@@




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章