码迷,mamicode.com
首页 > 移动开发 > 详细

Android PreferenceScreen

时间:2020-07-20 22:27:20      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:android   extend   bundle   pack   idt   import   cal   oncreate   intent   

 

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);
		}

	}
}

  

  

 

  

Android PreferenceScreen

标签:android   extend   bundle   pack   idt   import   cal   oncreate   intent   

原文地址:https://www.cnblogs.com/crushgirl/p/13347251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!