Android preferences onclick event

后端 未结 5 1515
轻奢々
轻奢々 2020-12-22 22:15

In my preferences.xml I have a preference element like this:


I want to assign onClick

5条回答
  •  猫巷女王i
    2020-12-22 23:02

    2018+ UPDATE Today, the findPreference method is depricated. So, to achieve this, just override the onPreferenceTreeClick method in your Preference fragment. For example:

    public class MySettingsFragment extends PreferenceFragment {
    
        @Override
        public boolean onPreferenceTreeClick (PreferenceScreen preferenceScreen,
                                              Preference preference)
        {
            String key = preference.getKey();
            if(key.equals("someKey")){
                // do your work
                return true;
            }
            return false;
        }
    }
    

    Furthermore, if you need to handle a click inside particular preference element (e.g. ListPreference), you should register the setOnPreferenceChangeListener inside the onCreate method of the MySettingsFragment:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    
        // register listener
        final Preference prefList = findPreference("key");
        prefList.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            public boolean onPreferenceChange(Preference preference, Object value) {
                System.out.println("Selected: " + value);
                return true;
            }
        });
    }
    

提交回复
热议问题