2011-03-31 205 views
3

代碼:addPrefencesFromResource導致ClassCastException異常

public class Preferences extends PreferenceActivity { 
public static final String PREF_AUTO_UPDATE = "PREF_AUTO_UPDATE"; 
public static final String PREF_MIN_MAG = "PREF_MIN_MAG"; 
public static final String PREF_UPDATE_FREQ = "PREF_UPDATE_FREQ"; 

SharedPreferences prefs; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    Context context = getApplicationContext(); 

    addPreferencesFromResource(R.xml.userprefs); 


} 

每次我切換到喜好的活動,我得到的崩潰我的應用程序運行時錯誤。順着跟蹤我得到:

造成的:java.lang.ClassCastException:java.lang.Integer中

做一些調試我發現,註釋掉行addPreferencesFromResource將保持應用程序崩潰後,但(顯然)不加載任何用戶界面。我正在複製這個例子非常多的線,爲了排除一個教科書,並不能找出我失去的生活。

+0

向我們展示您的userprefs.xml – Vivek 2011-03-31 16:14:46

回答

0

我正在玩這個東西,碰到一樣的東西。原來我正在做一個putInt,但是接下來定義首選項的xml文件有一個TextEditPreference與相關的鍵相關聯。據我所知,TextEditPreference堅持通過putString/getString(duh)與sharedpreferences文件進行交互,而我在某處玩的putInt在app-preferences.xml(/ data/data /中)中插入了一個元素。 ./shared_prefs/ ..),每次調用addPreferencesFromResource時會終止首選項活動。不知道你的情況是否如此,但是我認爲一旦你發佈你的用戶偏好,人們可以提供幫助,並且還要注意你是否在代碼中使用TextEditPreference的關鍵字時使用putInt,或者像我(錯誤地)做的那樣。

0

檢查您的資源類型。這可能是問題所在。

+0

您能否詳述一下? userprefs.xml是一個包含路徑res/xml/userprefs的xml文件。 – aamiri 2011-03-31 16:28:05

+0

在我看來,當你嘗試提供String資源給int值或者smth時會出現這種情況。你可以發佈你的userprefs.xml嗎? – 2011-03-31 18:43:46