2011-03-31 141 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