Java AddPreferencesFromResource导致ClassCastException
代码:Java AddPreferencesFromResource导致ClassCastException,java,android,preferences,classcastexception,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"; S
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。我把这个例子一行一行地从课本上抄下来,我一辈子都弄不明白我遗漏了什么 检查您的资源类型。这可能就是问题所在。我当时在玩这个东西,碰到了类似的东西。原来我在做一个putInt,但是定义首选项的xml文件有一个TextEditPreference与相关键连接。据我所知,TextEditPreference坚持通过putString/getString(duh)与SharedReferences文件交互,而我在游戏中做的putin在app-preferences.xml(/data/data/。/shared_prefs/)中粘贴了一个元素,每次调用addPreferencesFromResource时都会杀死preference活动。我不确定你的情况是否如此,但我认为一旦你发布了你的userpref,人们可以提供帮助,并注意到你是否在代码中使用TextEditPreference的键Putin或类似于我(错误地)所做的任何事情。你能再详细说明一下吗?xml是一个路径为res/xml/userprefs的xml文件。在我看来,当您尝试向int-value或smth提供字符串资源时,可能会出现这种情况。你能发布你的userprefs.xml吗?