zoukankan      html  css  js  c++  java
  • Android PreferenceScreen

     https://blog.csdn.net/weixin_43529377/article/details/98963095

    PreferenceScreen和fragment结合

    一、监听事件

    1.1、onPreferenceChange

    public boolean onPreferenceChange(Preference preference, Object objValue) { return false; }
    

    说 明: 当Preference的元素值发送改变时,触发该事件。
    返回值: true 代表将新值写入sharedPreference文件中。
    false 则不将新值写入sharedPreference文件。

    1.2、onPreferenceClick

    public boolean onPreferenceClick(Preference preference) { return false; }
    

    说明:当点击控件时触发发生,可以做相应操作。
    参数说明: preference 点击的对象。
    返回值:true,不执行onPreferenceTreeClick

    1.3、onPreferenceTreeClick

    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
          return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
    

    说 明: 当Preference控件被点击时,触发该方法。
    参数说明: preference 点击的对象。
    返 回 值: true 代表点击事件已成功捕捉,无须执行默认动作或返回上层调用链。 例如, 不跳转至默认Intent。
    false 代表执行默认动作并且返回上层调用链。例如,跳转至默认Intent。

    1.4、点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值,
    然后再回调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick和onPreferenceTreeClick方法中我们得到的控件值就是最新的Preference控件值。

    二、daemo

    2.1、activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.gatsby.preferencesreen.MainActivity" >
    
        <fragment
            android:id="@+id/settingsFragment"
            android:name="com.gatsby.preferencesreen.MainActivity$SettingsFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>

    2.2、R.xml.preferences

    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <PreferenceCategory android:title="标题--开关按钮" >
            <CheckBoxPreference
                android:key="checkbox_preference"
                android:summary="这是一个开关按钮"
                android:title="开关偏好" />
        </PreferenceCategory>
        <PreferenceCategory android:title="自定义偏好" >
            <Preference
                android:key="preference"
                android:summary="这是一个自定义按钮"
                android:title="自定义" />
        </PreferenceCategory>
    
    </PreferenceScreen>

    2.3、MainActivity.java

    package com.gatsby.preferencesreen;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.preference.CheckBoxPreference;
    import android.preference.Preference;
    import android.preference.Preference.OnPreferenceChangeListener;
    import android.preference.Preference.OnPreferenceClickListener;
    import android.preference.PreferenceFragment;
    import android.preference.PreferenceScreen;
    import android.util.Log;
    
    public class MainActivity extends Activity {
    
    	private static final String KEY_CHECKBOX = "checkbox_preference";
    	private static final String KEY_PREFERENCE = "preference";
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    
    	public static class SettingsFragment extends PreferenceFragment
    			implements OnPreferenceChangeListener, OnPreferenceClickListener {
    
    		CheckBoxPreference checkbox_preference;
    		Preference preference;
    
    		@Override
    		public void onCreate(Bundle savedInstanceState) {
    			super.onCreate(savedInstanceState);
    			addPreferencesFromResource(R.xml.preferences);
    
    			checkbox_preference = (CheckBoxPreference) findPreference(KEY_CHECKBOX);
    			checkbox_preference.setOnPreferenceChangeListener(this);
    			preference = (Preference) findPreference(KEY_PREFERENCE);
    			preference.setOnPreferenceClickListener(this);
    		}
    
    		@Override
    		public boolean onPreferenceChange(Preference preference, Object objValue) {
    			// TODO Auto-generated method stub
    			final String key = preference.getKey();
    
    			if (KEY_CHECKBOX.equals(key)) {
    				boolean isCheck = (Boolean) objValue;
    				if (isCheck) {
    					Log.d("gatsby", "isCheck");
    				} else {
    					Log.d("gatsby", "not Check");
    				}
    			}
    			return true;
    		}
    
    		@Override
    		public boolean onPreferenceClick(Preference preference) {
    			// TODO Auto-generated method stub
    			final String key = preference.getKey();
    
    			if (KEY_PREFERENCE.equals(key)) {
    				Log.d("gatsby", "preference");
    			}
    			return false;
    		}
    		
    		@Override
    		public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    			// TODO Auto-generated method stub
    			final String key = preference.getKey();
    
    			if (KEY_PREFERENCE.equals(key)) {
    				Log.d("gatsby", "preference TreeClick!");
    			}
    			return super.onPreferenceTreeClick(preferenceScreen, preference);
    		}
    
    	}
    }
    

      

      

      

  • 相关阅读:
    一种循环方式
    SqlServer循环读取配置
    app抓包
    c# 前端写代码的情况
    第36月第27日 codesign重签名
    第36月第26天 吴恩达 目标检测
    第36月第25天 TensorFlow Object_detection
    第36月第19天 多个tomcat查端口
    第36月第8天 flask_bootstrap
    第36月第5天 升级到 XCode10.3 项目中的xib报错
  • 原文地址:https://www.cnblogs.com/crushgirl/p/13347251.html
Copyright © 2011-2022 走看看