У меня есть эти предпочтения:SharedPreference Изменение Слушатель и пользовательские предпочтения
<xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:key="pk1"
android:title="@string/pt1"
android:summary="@string/pt1s"
android:defaultValue="false" />
<CheckBoxPreference
android:key="pk2"
android:title="@string/pt2"
android:defaultValue="false" />
<ListPreference
android:key="pk3"
android:title="@string/pt3"
android:dialogTitle="@string/pt3"
android:entries="@array/fontsi"
android:entryValues="@array/fontsiv"
android:defaultValue="0" />
<Preference
android:key="pkb"
android:title="@string/ptb" />
</PreferenceScreen>
И активность настройки:
public class SettingsActivity extends PreferenceActivity {
SharedPreferences.OnSharedPreferenceChangeListener lst;
SharedPreferences prf;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
prf = getPreferenceScreen().getSharedPreferences();
lst = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
Log.i("SettingsActivity","!any preference changen!");
if (key.equals("pk1")) { Log.i("SettingsActivity","!pref PK1 called!"); } }
else if (key.equals("pkb")) { Log.i("SettingsActivity","!pref PKB called!"); }
prf.registerOnSharedPreferenceChangeListener(lst);
}
@Override
protected void onResume() {
super.onResume();
prf.registerOnSharedPreferenceChangeListener(lst); }
@Override
protected void onPause() {
super.onPause();
prf.unregisterOnSharedPreferenceChangeListener(lst); }
...
}
Слушатель работает со всеми предпочтениями, но е пользовательских предпочтений (последний, ПКБ как ключ)! Что я хочу использовать в качестве кнопки «Назад». Кто-нибудь знает почему?
Я думаю, вы правы user324 (? Могу ли я позвонить вам user324), OnPreferenceClickListener работает точно, это был старый код , Мне не нравится идея поставить второго слушателя, но я думаю, что я должен ... Спасибо user324, я думаю, что плохо признаю ваш ответ через 2 дня. – Jackd
@ Jackd приветствую :) – Simas