检测首选项的更改

时间:2011-12-19 02:09:19

标签: java android sharedpreferences preferenceactivity

我有一个扩展PreferenceActivity的类:

public class PreferenceActivity extends android.preference.PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

}

我有多个偏好:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
android:title="Preferences">
    <PreferenceCategory
        android:title="Web Server">

        <EditTextPreference
            android:key="accessToken_key"
            android:title="Access Token"
            android:summary="The access token required to access the web server"
            android:dialogTitle="Access Token"
            android:numeric="integer"
            android:maxLength="12" />

    </PreferenceCategory>

</PreferenceScreen>

如何检测用户何时更改EditTextPreference以便我可以立即将新值存储到变量中?

1 个答案:

答案 0 :(得分:3)

尝试查看

http://developer.android.com/reference/android/preference/Preference.html http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html

如果您没有运行基于片段的首选项,那么

    findPreference("key_for_pref").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            // TODO Auto-generated method stub
            return false;
        }
    });

警告:对于较新的基于片段的首选项

,不推荐使用此findPreference api

希望这会有所帮助。