私はPreferenceFragmentCompat
を使用していますが、私の場合はListPreference
の値を編集したときに上書きする方法を見つけることができません。私はちょうど選ばれた価値にすぐに反応したいです。PreferenceがPreferenceFragmentCompatに格納されているときに呼び出されるメソッドはありますか?
ありがとうございました!
私はPreferenceFragmentCompat
を使用していますが、私の場合はListPreference
の値を編集したときに上書きする方法を見つけることができません。私はちょうど選ばれた価値にすぐに反応したいです。PreferenceがPreferenceFragmentCompatに格納されているときに呼び出されるメソッドはありますか?
ありがとうございました!
私はあなたが好ましいのは、クリックされたときに呼び出されるコールバック用のインターフェイスの定義を探していると信じて:
私はすべての設定のすべての変更をサブスクライブする別の方法を見つけました:SharedPreferences.OnSharedPreferencesChangeListener。 2つの選択肢を含むコードは、次のようになります。
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.util.Log;
/**
* A simple {@link Fragment} subclass.
*/
public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceChangeListener {
private static final String TAG = "SettingsFragment";
private Preference thePreference;
public SettingsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
thePreference = findPreference("chosen_theme");
if (thePreference != null) {
thePreference.setOnPreferenceChangeListener(this);
} else {
Log.d(TAG, "Preference is empty");
}
}
@Override
public void onCreatePreferences(Bundle bundle, String s) {
}
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
Log.d(TAG, String.format("Changed: %s", preference.getKey()));
return true;
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d(TAG, String.format("%s %s", sharedPreferences, key));
}
}
SharedPreferencesの方がより柔軟です。
だから、それは[OnPreferenceChangeListener](http://developer.android.com/reference/android/support/v7/preference/Preference.OnPreferenceChangeListener.html)です。 –