1 、新建 MyPreferenceActivity 继承 PreferenceFragment 类,在onCreate 方法中加载自定义 PreferenceScreen XML 文件
public class MyPreferenceActivity extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载自定义 PreferenceScreen XML 文件
addPreferencesFromResource(R.xml.settings);
}
}
2 、 编写自定义的 PreferenceScreen xml 文件
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:key="set"
android:summary="请设置"
android:title="设置" >
<CheckBoxPreference
android:key="闹钟"
android:summary="请设置闹钟"
android:title="设置闹钟" />
<ListPreference
android:entryValues="@array/list_arrays_values"
android:entries="@array/list_arrays"
android:key="列表"
android:icon="@android:drawable/ic_search_category_default"
android:title="设置列表"
android:summary="设置列表描述"
>
</ListPreference>
</PreferenceCategory>
</PreferenceScreen>
3 、 在 MainActivity 的布局文件中,加入将要放置Fragment 的容器
<FrameLayout
android:id="@+id/contain"
android:layout_width="match_parent"
android:layout_height="match_parent"
></FrameLayout>
4 、 在MainActivity 中把 PreferenceFragment 附加到Activity 上
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 把 PreferenceFragment 附加到Activity 上
FragmentManager fm = getFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.contain);
if (fragment == null) {
fragment = new MyPreferenceActivity();
fm.beginTransaction().add(R.id.contain, fragment)
.commit();
}
}
}
4 、注意: 例如 使用ListPreference 的时候,要注意定义
android:entryValues="@array/list_arrays_values" //<!-- 键 Key -->
android:entries="@array/list_arrays" // <!-- 值 Value -->
这两个属性对用的Values 下的 arrays.xml 文件,注意Key-Value 都要.
<resources>
<!-- 键 KEY -->
<string-array name="list_arrays">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<!-- 值 Value -->
</string-array>
<string-array name="list_arrays_values">
<item>1.1</item>
<item>2.1</item>
<item>3.1</item>
<item>4.1</item>
<item>5.1</item>
<item>6.1</item>
</string-array>
</resources>
5 、 在 PreferenceScreen 中定义的,设定其Key
6 、 结果的 xml 文件保存在 /data/data/应用包名/share_prefs 中
7 、 在 PreferenceScreen 内部添加 PreferenceScreen ,实现点击该项进入另一新的 PreferenceScreen 功能