顽强的回答是正确的,但这里有更多细节。
您不能“创建普通布局并将视图组件手动绑定到 sharedprefs”的原因是 android.preferences API 中有一些令人惊讶的遗漏。PreferenceActivity 和 PreferenceFragment 都可以访问关键的非公共 PreferenceManager 方法,如果没有这些方法,您将无法实现自己的首选项 UI。
特别是,要从 XML 文件构造 Preference 层次结构,您需要使用 PreferenceManager,但 PreferenceManager 的所有构造函数要么是包私有的,要么是隐藏的。将 Preference onClick 侦听器附加到您的活动的方法也是包私有的。
而且你不能通过偷偷地将你的实现放在 android.preferences 包中来解决这个问题,因为 Android API 中的非公共方法实际上从 SDK 中省略了。通过一些涉及反射和动态代理的创造力,你仍然可以得到它们。正如Tenacious 所说,唯一的选择是分叉整个android.preference 包,包括至少15 个类、5 个布局以及相似数量的style.xml 和attrs.xml 元素。
所以要回答最初的问题,谷歌没有在兼容性包中包含 PreferenceFragment 的原因是他们会遇到与 Tenacious 和我完全相同的困难。甚至 Google 也无法及时返回并在旧平台上公开这些方法(尽管我希望他们在未来的版本中这样做)。