这实际上很简单。在根文件头打开的XML文件中,我添加了Preference项目并将android:fragment设置为我的PreferencesFragment类。为了澄清我的整个系统是如何工作的,我有:
public class MyPreferencesActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> targer) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
preference_headers则是这样的:
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<header android:fragment="com.my.androidapp.MyPreferencesFragment" title="General Category >
<extra android:name="resource" android:value="preferences_general" />
</header>
<header... one per category, different titles and extra values for each.
</preference-headers>
MyPreferenceFragment看起来是这样的:
public class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String name = getArguments().getString("resource");
int res = getActivity().getResources().getIdentifier(name, "xml", getActivity().getPackageName());
addPreferencesFromResource(res);
然后终于,我的偏好文件看起来像这样:
<PreferenceScreen blah...>
<Preference android:fragment="com.my.androidapp.MyPreferenceFragment" android:title="Drill Down!">
<extra android:name="resource" android:value="preferences_subgeneral" />
</Preference>
<Preference... whatever I want... I can use ordinary preferences or any number of items that can be selected to drill down further still.
</PreferenceScreen>
希望这可以帮助其他人,尤其是其他有大量偏好的人。
500似乎有很多喜好。为什么不简单地在更小的群体中打破这些偏好并使用当前的系统? – Luksprog 2012-07-30 18:34:35
我的首选项目是“常规”,“个性化”,“数据收集”,“图形”,“配置”和“关于”。配置是真正需要分解的配置。它包含300多种偏好,我可以将其分成20类。虽然这是真的,但我可以将这20个类别添加到顶部列表中,看起来像拥有“常规”,“个性化”,“数据收集”,“图形”,20个不同的“配置(名称)”,和“关于”。我宁愿用户选择“配置”,然后查看他们可以配置的事情列表,然后设置每个事物的首选项。 – ArtOfWarfare 2012-07-30 18:42:51
应用程序的设置部分应该是简单的东西,而不是压倒用户的东西(确切地说,当用户必须从gazillion选项中选择时会发生什么)。您不必将名称命名为配置(名称),只需使用这些特定分组设置的代表名称即可。如果你坚持你的最初目标,我会做一个正常的活动,并按照我想要的水平来构建它。 – Luksprog 2012-07-30 18:53:55