简短的例子,定义一个PreferenceActivity
,并提供主要类别的头文件:
Class SettingsActivity
:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.headers,target);
}
}
File /res/xml/headers.xml
:
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:title="Preference Header"
android:fragment="com.example.SettingsDemo.PrefFragment"/>
</preference-headers>
创建一个PreferenceFragment
如中所引用的android:fragment
上面,提供自己的首选项文件:
class PrefFragment
:
public class PrefFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
File /res/xml/prefs.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Preferences">
<SwitchPreference android:title="Preference" />
<PreferenceScreen android:title="Sub Preferences"
android:fragment="com.example.SettingsDemo.SubPrefFragment"/>
</PreferenceCategory>
</PreferenceScreen>
创建一个孩子PreferenceFragment
如中所引用的android:fragment
上面,也提供自己的首选项文件:
Class SubPrefFragment
:
public class SubPrefFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.sub_prefs);
}
}
File /res/xml/sub_prefs.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Sub Preferences">
<CheckBoxPreference android:title="Sub Preference"/>
</PreferenceCategory>
</PreferenceScreen>
就是这样。这PreferenceActivity
将自动显示所有子片段。
Results:
Main PreferenceFragment
:
Replaced by sub PreferenceFragment
, under same header: