preference用法简单介绍

在做一般的设置界面时,ANDROID开发为我们提供了一个非常实用的设置类,PreferenceActivity,用法与ACTIVITY十分相似,现简单介绍如下:

1.xml

使用PreferenceActivity时需要自定义一个xml,内部使用的控件都来自PreferenceActivity,这里用一个CheckBoxPreference和一个Preference为例,xml定义如下:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="test">
        <CheckBoxPreference android:summaryOff="已关闭" android:summaryOn="已开启" android:key="checkbox_shake1" android:title="shake"></CheckBoxPreference>
        <Preference android:title="shake_setting" android:key="shake1_setting" android:dependency="checkbox_shake1"></Preference>
    	
    </PreferenceCategory>
    
    
</PreferenceScreen>


这里CheckBoxPreference 相当于一个view中的checkbox,summaryoff属性为不选择时的小标题,summaryon为选择时的小标题,Preference的dependency属性为基于哪个空间触发,即当CheckBoxPreference 选中时,Preference可以操作,否则Preference为灰色不能处理。

2.   .java

package hui.dickren123.com;

import dickren123.hui.say_hello_to_world.R;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.util.Log;

public class Preference_activity_of_huitestActivity extends PreferenceActivity 
				implements Preference.OnPreferenceClickListener{
	private CheckBoxPreference checkbox_shake1;
	private Preference shake1_settings;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.huitest);//引入布局文件 相当于setContentView();
        
        checkbox_shake1 = (CheckBoxPreference)findPreference("checkbox_shake1");
        shake1_settings = (Preference)findPreference("shake1_setting");//findPreference类似findViewById
        
        shake1_settings.setOnPreferenceClickListener(this);//设置Preference的监听 
        												   //由于引入Preference.OnPreferenceClickListener接口
        													//故只需传入匿名对象
        
    }
    
	@Override
	public boolean onPreferenceClick(Preference arg0) {
		Log.i("123", " 123"); //点击Preference事件
		
		return false;
	};
}


希望大家多多交流!!!

PreferenceAndroid 中的一种轻量级的持久化存储机制,可以用来存储应用程序的各种设置和配置信息。在使用 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 中的键值对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值