How to listen for preference changes within a PreferenceFragment?

前端 未结 9 2100
自闭症患者
自闭症患者 2020-11-28 19:16

As described here, I am subclassing PreferenceFragment and displaying it inside an Activity. That document explains how to listen for preference changes here, but only if yo

9条回答
  •  没有蜡笔的小新
    2020-11-28 19:49

    Here is one way to do it and avoid any potential memory leaks:

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        addPreferencesFromResource(R.xml.pref_movies);
    
        SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences(); 
    
        //starts live change listener
        sharedPreferences.registerOnSharedPreferenceChangeListener(this);
    }
    
    @Override
    public void onDestroyView () {
        super.onDestroyView(); 
    //Unregisters listener here
        PreferenceManager.getDefaultSharedPreferences(getContext())
                .unregisterOnSharedPreferenceChangeListener(this);
    }
    

提交回复
热议问题