У меня есть класс, расширяющий 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, чтобы я мог сразу сохранить новое значение в переменной?
Попробуйте взглянуть на
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 устарел при более новых настройках на основе фрагментов
Надеюсь, это поможет.