addPrefencesFromResource вызывает ClassCastException - PullRequest
3 голосов
/ 31 марта 2011

Код:

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 предотвратит сбой приложения, но (очевидно) не загружает никакой пользовательский интерфейс.Я копирую этот пример довольно много строк за строкой из учебника и не могу понять для себя, что мне не хватает.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

Я играл с этим материалом и ударил то же самое.Оказывается, я делал putInt, но затем в xml-файле, определяющем настройки, была привязана TextEditPreference с соответствующим ключом.Насколько я могу судить, TextEditPreference настаивает на взаимодействии с файлом sharedpreferences через putString / getString (duh), а метод putInt, который я делал где-то во время игры, застрял в файле app-preferences.xml (/ data / data /)../shared_prefs/ ..), которая убивает действие предпочтений каждый раз, когда вызывает addPreferencesFromResource.Не уверен, что именно так и происходит в вашем случае, но я думаю, что люди могут помочь, как только вы опубликуете свои пользовательские настройки, а также заметите, если вы сами используете putInt для ключа TextEditPreference в коде или что-то подобное, что я (неправильно) делал.

0 голосов
/ 31 марта 2011

Проверьте тип ваших ресурсов.Это может быть проблемой.

...