<span style="font-family:SimSun;font-size:18px;color:#ff0000;">PreferenceActivity继承了ListActivity,主要用于做设置界面的时候用。</span>
<span style="font-family:SimSun;"><span style="font-size:18px;color:#ff0000;">主布局文件:</span><span style="font-size: 14px;">(这里的这个布局文件不是layou下面的布局文件)</span></span>
<span style="font-family:SimSun;"></span><pre name="code" class="java" style="font-size: 14px;"><?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 指定启动特定PreferenceFragment的列表项 -->
<header
android:fragment="com.example.setpreferenceactivity.MainActivity$FirstPreferenceFragment"
android:icon="@drawable/lock2"
android:summary="设置应用的相关选项"
android:title="程序选项设置" />
<header
android:fragment="com.example.setpreferenceactivity.MainActivity$SecondPreferenceFragment"
android:icon="@drawable/lock2"
android:summary="设置应用的相关选项"
android:title="程序选项设置" />
</preference-headers>
两个header的布局文件(两个fragment的布局):这里我使用的同一个布局文件。 <span style="font-family:SimSun;"><span style="font-size: 14px;"></span></span><pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置系统铃声 -->
<PreferenceCategory android:title="铃声">
<RingtonePreference
android:ringtoneType="all"
android:title="设置铃声"
android:summary="选择铃声"
android:showDefault="true"
android:key="ring_key"
android:showSilent="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="推送">
<CheckBoxPreference
android:key="tuisong_key"
android:title="是否推送"
android:summaryOn="推送开启"
android:summaryOff="推送关闭"
android:defaultValue="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="用户名">
<EditTextPreference
android:key="name_key"
android:title="填写用户名"
android:summary="填写你的用户名"
android:dialogTitle="你的用户名是:"/>
</PreferenceCategory>
<PreferenceCategory android:title="性别">
<ListPreference
android:key="gender_key"
android:title="选择性别:"
android:dialogTitle="listpreference"
android:entries="@array/array_name_list"
android:entryValues="@array/array_value_list"
android:defaultValue="男"/>
</PreferenceCategory>
</PreferenceScreen>
<span style="font-size: 14px; font-family: SimSun; text-align: left;">这里做演示就两个fragment用同一个布局界面。</span>
接下来就是主要的java代码了:
<span style="font-size:14px;">package com.example.setpreferenceactivity;
import java.util.List;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.view.Gravity;
import android.widget.Button;
import android.widget.ListView;
//preferenceActivity继承了listactivity,相当于一个activity中加载了一个listview
public class MainActivity extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//该方法用于为该界面设置一个标题按钮
if(hasHeaders()){
Button button=new Button(this);
button.setText("设置");
setListFooter(button);
}
ListView list=(ListView) findViewById(android.R.id.list);
}
//负责加载页面布局文件
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
//这个方法要重写,反正当时没有重写就eclipse就报错了
@Override
protected boolean isValidFragment(String fragmentName) {
return true;
}
//创建preferencefragment
public static class FirstPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
}
public static class SecondPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
}
}
</span>
效果图:
<span style="font-family:SimSun;font-size:18px;color:#ff0000;">PreferenceActivity继承了ListActivity,主要用于做设置界面的时候用。</span>
<span style="font-family:SimSun;"><span style="font-size:18px;color:#ff0000;">主布局文件:</span><span style="font-size: 14px;">(这里的这个布局文件不是layou下面的布局文件)</span></span>
<span style="font-family:SimSun;"></span><pre name="code" class="java" style="font-size: 14px;"><?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 指定启动特定PreferenceFragment的列表项 -->
<header
android:fragment="com.example.setpreferenceactivity.MainActivity$FirstPreferenceFragment"
android:icon="@drawable/lock2"
android:summary="设置应用的相关选项"
android:title="程序选项设置" />
<header
android:fragment="com.example.setpreferenceactivity.MainActivity$SecondPreferenceFragment"
android:icon="@drawable/lock2"
android:summary="设置应用的相关选项"
android:title="程序选项设置" />
</preference-headers>
<span style="font-family:SimSun;"><span style="font-size: 14px;"></span></span><pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置系统铃声 -->
<PreferenceCategory android:title="铃声">
<RingtonePreference
android:ringtoneType="all"
android:title="设置铃声"
android:summary="选择铃声"
android:showDefault="true"
android:key="ring_key"
android:showSilent="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="推送">
<CheckBoxPreference
android:key="tuisong_key"
android:title="是否推送"
android:summaryOn="推送开启"
android:summaryOff="推送关闭"
android:defaultValue="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="用户名">
<EditTextPreference
android:key="name_key"
android:title="填写用户名"
android:summary="填写你的用户名"
android:dialogTitle="你的用户名是:"/>
</PreferenceCategory>
<PreferenceCategory android:title="性别">
<ListPreference
android:key="gender_key"
android:title="选择性别:"
android:dialogTitle="listpreference"
android:entries="@array/array_name_list"
android:entryValues="@array/array_value_list"
android:defaultValue="男"/>
</PreferenceCategory>
</PreferenceScreen>
<span style="font-size: 14px; font-family: SimSun; text-align: left;">这里做演示就两个fragment用同一个布局界面。</span>
<span style="font-size:14px;">package com.example.setpreferenceactivity;
import java.util.List;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.view.Gravity;
import android.widget.Button;
import android.widget.ListView;
//preferenceActivity继承了listactivity,相当于一个activity中加载了一个listview
public class MainActivity extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//该方法用于为该界面设置一个标题按钮
if(hasHeaders()){
Button button=new Button(this);
button.setText("设置");
setListFooter(button);
}
ListView list=(ListView) findViewById(android.R.id.list);
}
//负责加载页面布局文件
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
//这个方法要重写,反正当时没有重写就eclipse就报错了
@Override
protected boolean isValidFragment(String fragmentName) {
return true;
}
//创建preferencefragment
public static class FirstPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
}
public static class SecondPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
}
}
</span>