Ответ Tenacious правильный, но вот еще некоторые подробности.
Причина, по которой вы не можете «создать нормальный макет и связать компоненты представления с sharedprefs вручную», заключается в том, что в некоторых неожиданных упущенияхAPI android.preferences.PreferenceActivity и PreferenceFragment оба имеют доступ к критическим непубличным методам PreferenceManager, без которых вы не сможете реализовать собственный интерфейс предпочтений.
В частности, для построения иерархии предпочтений из XML-файла, который необходимо использоватьPreferenceManager, но все конструкторы PreferenceManager являются пакетными или скрытыми.Метод присоединения слушателей Preference onClick к вашей активности также является частным для пакета.
И вы не можете обойти это, хитро поместив свою реализацию в пакет android.preferences, потому что непубличные методы в AndroidAPI фактически исключены из SDK.Приложив немного креатива, включая рефлексию и динамические прокси, вы все равно можете их получить.Единственная альтернатива, как говорит Тенасид, - это разветвить весь пакет android.preference, включая как минимум 15 классов, 5 макетов и аналогичное количество элементов style.xml и attrs.xml.
Итак, чтобы ответитьИсходный вопрос, причина, по которой Google не включил PreferenceFragment в пакет совместимости, заключается в том, что у них была бы точно такая же сложность, как и у Tenacious и у меня.Даже Google не может вернуться назад во времени и сделать эти методы общедоступными на старых платформах (хотя я надеюсь, что они сделают это в будущих выпусках).