addPrefencesFromResource导致ClassCastException

时间:2011-03-31 16:11:10

标签: java android preferences 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会使应用程序崩溃,但(显然)不会加载任何UI。我正在复制这个例子几乎排成一行教科书,无法弄清楚我的生活中缺少什么。

2 个答案:

答案 0 :(得分:0)

检查您的资源类型。这可能是问题所在。

答案 1 :(得分:0)

我正在玩这些东西并且碰到了同样的东西。事实证明我正在做一个putInt但是然后定义首选项的xml文件有一个TextEditPreference连接相关的键。据我所知,TextEditPreference坚持通过putString / getString(duh)与sharedpreferences文件进行交互,而我在玩游戏时所做的putInt在app-preferences.xml(/ data / data /。 ./shared_prefs/ ..),每次调用addPreferencesFromResource时都会终止首选项活动。不确定这是不是你的情况,但我认为一旦你发布你的userprefs,人们可以提供帮助,并且还要注意你是否在代码中使用了TextEditPreference键上的putInt,或者是我(错误地)做的事情。