Nested preferences.xml

后端 未结 4 1475
小蘑菇
小蘑菇 2020-12-24 06:03

Is it somehow possible to include one preferences.xml into another, like it can be done for layouts with the tag?

Let\'s

4条回答
  •  旧时难觅i
    2020-12-24 06:22

    To truly achieve the nesting effect you can use this technique to relocate the loaded preferences to a group already loaded.

    PreferenceCategory notifications = (PreferenceCategory) getPreferenceScreen ().findPreference (PreferenceKey.pref_notifications.name ());
    addPreferencesFromResource (R.xml.pref_notifications, notifications);
    

    Where the enhanced addPreferencesFromResource is defined as:

    private void addPreferencesFromResource (int id, PreferenceGroup newParent) {
        PreferenceScreen screen = getPreferenceScreen ();
        int last = screen.getPreferenceCount ();
        addPreferencesFromResource (id);
        while (screen.getPreferenceCount () > last) {
            Preference p = screen.getPreference (last);
            screen.removePreference (p); // decreases the preference count
            newParent.addPreference (p);
        }
    }
    

    It works for any PreferenceGroup such as PreferenceScreen and PreferenceCategory.

提交回复
热议问题