android 里的 Preference 用法及作用
时间: 2024-03-12 11:50:02 浏览: 169
Preference 是 Android 中的一种轻量级的持久化存储机制,可以用来存储应用程序的各种设置和配置信息。在使用 Preference 时,可以通过简单的键值对来存储和读取数据,同时这些数据在应用程序退出后仍然可以保持不变,即实现了数据的持久化存储。
Preference 可以通过 XML 文件来定义,通常包括 PreferenceScreen、PreferenceCategory、CheckBoxPreference、EditTextPreference、ListPreference 等几种类型。其中,PreferenceScreen 是一个根元素,用来包含所有的 Preference,PreferenceCategory 用来将 Preference 分组,CheckBoxPreference 表示复选框,EditTextPreference 表示文本输入框,ListPreference 表示下拉列表框等。
使用 Preference 的步骤通常如下:
1. 定义一个 XML 文件,用来描述 Preference 的结构和属性;
2. 在 Activity 中通过 PreferenceFragment 或 PreferenceActivity 加载该 XML 文件;
3. 在代码中通过 SharedPreferences 对象来获取和设置 Preference 中的键值对。
例如,以下是一个简单的 Preference XML 文件:
```xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Display settings">
<CheckBoxPreference
android:key="show_images"
android:title="Show images"
android:summary="Whether to show images in the app"
android:defaultValue="true" />
<ListPreference
android:key="font_size"
android:title="Font size"
android:summary="Select the font size"
android:entries="@array/font_sizes"
android:entryValues="@array/font_sizes_values"
android:defaultValue="16sp" />
</PreferenceCategory>
<PreferenceCategory android:title="User settings">
<EditTextPreference
android:key="username"
android:title="Username"
android:summary="Enter your username"
android:dialogTitle="Enter your username" />
</PreferenceCategory>
</PreferenceScreen>
```
在 Activity 中加载该 XML 文件的方法如下:
```java
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
```
在代码中获取和设置 Preference 的方法如下:
```java
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean showImages = preferences.getBoolean("show_images", true);
String fontSize = preferences.getString("font_size", "16sp");
String username = preferences.getString("username", "");
```
其中,PreferenceManager.getDefaultSharedPreferences() 方法可以获取一个默认的 SharedPreferences 对象,通过该对象可以获取和设置 Preference 中的键值对。
阅读全文