2016-04-16 16 views

答えて

0

私はあなたが好ましいのは、クリックされたときに呼び出されるコールバック用のインターフェイスの定義を探していると信じて:

Preference.OnPreferenceClickListener

+0

だから、それは[OnPreferenceChangeListener](http://developer.android.com/reference/android/support/v7/preference/Preference.OnPreferenceChangeListener.html)です。 –

0

私はすべての設定のすべての変更をサブスクライブする別の方法を見つけました: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の方がより柔軟です。

関連する問題