Preference元素和监听事件

本文详细介绍了安卓开发中Preference的使用方法,包括布局结构、数据存储、事件处理等,并提供了获取preferences的三种方式及Preference元素的通用XML属性说明。

    安卓程序开发中常用Preference布局结构来做程序的设置项。Android系统会将Preference元素的值存储sharedPreference文件中,方便了数据的管理。该文件存放路径位DDMS视图下data/data/[packgename]/shared_prefs/文件下,命名约定为:packagename_preferencse.xml。Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性。

    获取preferences可以通过三种方式:
    一、getPreferences():可以获取同一activity中的preference;
    二、getSharedPreferences():可以获取映用级别的preferences(),在这个例子中由于我们封装在同一app中,也可以使用SharePreferences prefs = getSharedPreferences("com.wei.android.learning_preferences" ,0);其中第一个参数name的格式是<package_name>_preferences;
    三、getDefaultSharedPreferences():

    Preference的Activity继承PreferenceActivity,然后在onCreate()方法中通过addPreferencesFromResource(R.xml.custom_preference) (我们自定义的Preference 布局)。

Preference元素的通用XML Attributes说明:    

    android:key : 每个Preference控件独一无二的”ID”,唯一表示此Preference。          

    android:defaultValue : 默认值。 例如,CheckPreference的默认值可为”true”,默认为选中状态;ditTextPreference的默认值可为”110” 。

    android:enabled :表示该Preference是否可用状态。     

    android:title :每个Preference在PreferenceScreen布局上显示的标题——大标题

    android:summary : 每个Preference在PreferenceScreen布局上显示的标题——小标题(可以没有)

    android:persistent:表示Preference元素所对应的值是否写入sharedPreferen文件中,如果是true,则表示写入;否则,则表示不写入该Preference元素的值。

    android:dependency:表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用,则A可用;B不可用,则A不可用。

    android:disableDependentsState:与android:dependency相反。B可用,则A不可用;B不可用,则A可用。


    常用的方法则包括:  

getKey()        setKey()

        getTitle()      setTitle()

        getSummary()    setSummary()


分析Preference事件:

    在PreferenceActivity方法中,一个比较重要的监听点击事件方法为:

        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,Preference preference)          

        说明:当Preference控件被点击时,触发该方法。

        参数说明: preference   点击的对象。

        返回值:   true  代表点击事件已成功捕捉,无须执行默认动作或者返回上层调用链。例如,不跳转至默认Intent。                                        false 代表执行默认动作并且返回上层调用链。例如,跳转至默认Intent。

        在我们继承PreferenceActivity的Activity可以重写该方法,来完成我们对Preference事件的捕捉。


    Preference相关的两个重要监听接口。

    1) Preference.OnPreferenceChangeListener     该监听器的一个重要方法如下:

        boolean onPreferenceChange(Preference preference,Object objValue)

        说明:  当Preference的元素值发送改变时,触发该事件。

        返回值:true  代表将新值写入sharedPreference文件中。false 则不将新值写入sharedPreference文件

    2) Preference.OnPreferenceClickListener      该监听器的一个重要方法如下:

      publicbooleanonPreferenceClick(Preference preference)

        说明:当点击控件时触发发生,可以做相应操作。

        

     那么当一个Preference控件实现这两个接口时,当被点击或者值发生改变时,触发方法是如何执行的呢?事实上,

     它的触发规则如下:

      1)先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;

              如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。

      2)onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。

Android中,为了给`SwitchPreference`这种开关样式的选择项添加点击事件,你需要在布局文件中设置`onClick`属性,并创建一个对应的回调函数来处理这个事件。以下是步骤: 1. 首先,在XML布局文件(例如res/layout/my_preferences.xml)中找到`SwitchPreference`元素: ```xml <switchPreference android:title="开关标题" android:key="your_key" android:defaultValue="false" <!-- 设置默认值 --> android:onClick="onSwitchClicked" <!-- 添加 onClick 属性 --> /> ``` 2. 接着,在对应的Activity或Fragment类中声明并实现`onSwitchClicked`方法: ```java public class YourActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your); SwitchPreference switchPref = findViewById(R.id.your_switch_preference); // 获取SwitchPreference实例 // 注册点击监听 switchPref.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // 当切换到开状态时,执行相应操作 Log.d("Switch", "Switch is turned on"); } else { // 切换到关状态时执行操作 Log.d("Switch", "Switch is turned off"); } } }); } // 用于响应Switch点击的回调方法 private void onSwitchClicked(View v) { // 在这里获取SwitchPreference实例并执行更复杂的逻辑,如果需要的话 } } ``` 在这个例子中,当用户点击`SwitchPreference`时,会触发`onSwitchClicked`方法,你可以在这个方法里编写具体的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值