在PreferenceActivity之外使用findPreference(key)

时间:2011-12-30 17:05:44

标签: android android-preferences

我正在尝试在与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对象,但也不能这样做。

2 个答案:

答案 0 :(得分:2)

添加到thinksteep的答案,您应该从您的活动中执行以下操作:

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

或类似。

答案 1 :(得分:-2)

我认为你不需要实例化PreferenceManager,我认为你可以做PreferenceManager.findPreference(key);我现在无法验证这一点,但这里有一个类似讨论的链接{{3} }