3

代码:

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。我正在从教科书中逐行复制这个示例,并且无法为我的生活弄清楚我所缺少的东西。

4

2 回答 2

0

我正在玩这些东西并击中了同样的东西。原来我正在做一个 putInt 但随后定义首选项的 xml 文件有一个 TextEditPreference 与相关键挂钩。据我所知,TextEditPreference 坚持通过 putString/getString (duh) 与 sharedpreferences 文件交互,而我在某处玩弄的 putInt 在 app-preferences.xml (/data/data/. ./shared_prefs/..),它会在每次调用 addPreferencesFromResource 时终止首选项活动。不确定这是否是你的情况,但我认为一旦你发布你的用户偏好,人们可以提供帮助,并注意你是否在 TextEditPreference 的键上使用 putInt 自己在代码中或者像我(错误地)做的任何事情。

于 2011-04-02T00:57:39.990 回答
0

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

于 2011-03-31T16:15:36.497 回答