如果没有特殊要求,我们可以使用Android提供的框架来创建系统样式的Preference Screen,在其内部可以包含PreferenceCategory和Preference
创建Preference有两种方法,第一种是使用PreferencesActivity。首先在res/values下创建一个arrays.xml用于存放ListPreference的数据
复制代码 代码如下:
然后在res/xml下创建userpreferences.xml,用于定义PreferenceScreen
复制代码 代码如下:
android:title="Auto refresh"
android:summary="Select to turn on automatic updating"
android:defaultValue="true"/>
android:title="Prefresh frequency"
android:summary="Frequency at which to refresh earthquake list"
android:entries="@array/update_freq_options"
android:entryValues="@array/update_freq_values"
android:dialogTitle="Prefresh frequency"
android:defaultValue="60"/>
android:title="Minmum magnitude"
android:summary="Select the minimum magnitude earthquake to report"
android:entries="@array/magnitude_options"
android:entryValues="@array/magnitude"
android:dialogTitle="Magnitude"
android:defaultValue="3"/>
最后在MainActivity中重写onCreate方法,这个MainActivity要继承PreferenceActivity,使用addPreferencesFromResource添加PreferenceScreen
复制代码 代码如下:
public class MainActivity extends PreferenceActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.userpreferences);
}
}
OK,搞定,效果如图
第二种方法是使用PreferenceFragment,首先创建UsePreferenceFragment类继承PreferenceFragment类,重写onCreate方法,使用addPreferencesFromResource来加载userpreferences.xml
复制代码 代码如下:
public class UserPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.userpreferences);
}
}
然后在res/xml下创建preference_headers.xml,来关联UsePreferenceFragment
复制代码 代码如下:
android:summary="Earthquake Refresh Settings" />
最后在MainActivity中重写onBuildHeaders方法
复制代码 代码如下:
public class MainActivity extends PreferenceActivity
{
@Override
public void onBuildHeaders(List
{
// TODO Auto-generated method stub
loadHeadersFromResource(R.xml.preference_headers, target);
}
}
搞定,效果如图: 然后点击Settings就会进入下个界面



