Используйте findPreference (ключ) вне PreferenceActivity

Я пытаюсь использовать этот код вне действия, не связанного с PreferenceActivity. Я пытаюсь это сделать, чтобы получить доступ к значению моего предпочтения.

Preference prefNotify = findPreference(ACCUWX.Preferences.PREF_TEMPERATURE_NOTIFY);
String currentPrefValue = null;
if (prefNotify instanceof ListPreference) {
    ListPreference listPref = (ListPreference) prefNotify;
    currentPrefValue = (listPref.getEntry()).toString();
    Log.i(DEBUG_TAG, "current pref value in done is " + currentPrefValue);
}

но я не могу получить доступ к findPreference в своем классе, потому что он не расширяет PreferenceActivity. Я попытался создать экземпляр объекта PreferenceManager, но тоже не могу этого сделать.


person taraloca    schedule 30.12.2011    source источник


Ответы (2)


В дополнение к ответу thinksteep вы должны сделать что-то вроде этого из своей деятельности:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreference(this);
prefs.getString(PREF_KEY, "default");

или похожие.

person Pedantic    schedule 30.12.2011
comment
@Pedantic - у вас уже второе подобное, что я видел за последние пять минут, и ваше тоже не работает. Боже. Просто напишите и скомпилируйте свое предложение. - person DSlomer64; 05.06.2018
comment
Я полагаю, что отсутствующий ответ @thinksteep также является подделкой. - person DSlomer64; 05.06.2018

Я думаю, вам не нужно создавать экземпляр PreferenceManager, я думаю, вы можете просто сделать PreferenceManager.findPreference(key); Я не могу проверить это прямо сейчас, но вот ссылка с аналогичным обсуждением Менеджер предпочтений

person kosa    schedule 30.12.2011
comment
Прежде чем голосовать против, вам нужно проверить, для какой версии был дан ответ на этот вопрос и какую версию вы пробовали. На этот вопрос был дан ответ почти 8 месяцев назад, и многое может измениться. - person kosa; 06.07.2012
comment
Но, рад видеть ваш комментарий с отрицательным голосом. Это хорошо для сообщества. Так держать. - person kosa; 06.07.2012
comment
Понижение, вероятно, было связано с качеством вашей слишком короткой попытки ответить на вопрос, который требует больше, чем одно или два предложения, будь то правильное или неправильное, независимо от версии. - person DSlomer64; 05.06.2018