Android PreferenceScreen
时间:2020-07-20 22:27:20
收藏:0
阅读:102
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);
}
}
}
评论(0)