PreferenceActivity PreferenceScreen (3.0/API 11 以前)

本文介绍如何使用Android提供的XML驱动框架创建系统样式的PreferenceScreen。通过示例代码展示如何定义偏好设置项并监听其变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Android提供了一个XML驱动的框架,用于为应用程序创建系统样式的PreferenceScreen.

(3.0/API 11 以前)是这样使用的 

看代码:

mypreference.xml

  1. <span style="font-family: Microsoft YaHei; font-size: 14px;"><?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <PreferenceCategory android:title="MyCategory" >  
  5.         <CheckBoxPreference  
  6.             android:key="PREF_AUTO_REFRESH"  
  7.             android:defaultValue="true"  
  8.             android:summary="select to turn on automatic updating"  
  9.             android:title="Auto Refresh" />  
  10.     </PreferenceCategory>  
  11.   
  12. </PreferenceScreen></span>  
<span style="font-family:Microsoft YaHei;font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory android:title="MyCategory" >
        <CheckBoxPreference
            android:key="PREF_AUTO_REFRESH"
            android:defaultValue="true"
            android:summary="select to turn on automatic updating"
            android:title="Auto Refresh" />
    </PreferenceCategory>

</PreferenceScreen></span>

MainActivity.java 

  1. package com.example.preferencedemo;  
  2.   
  3. import android.content.SharedPreferences;  
  4. import android.content.SharedPreferences.OnSharedPreferenceChangeListener;  
  5. import android.os.Bundle;  
  6. import android.preference.PreferenceActivity;  
  7. import android.preference.PreferenceManager;  
  8. import android.util.Log;  
  9. import android.view.Menu;  
  10.   
  11. //当SharedPreferences发生变化的时候,可以监听其变化,并作出相应的处理  
  12. public class MainActivity extends PreferenceActivity implements  
  13.         OnSharedPreferenceChangeListener {  
  14.   
  15.     private SharedPreferences mSharedPreferences;  
  16.     private boolean mIsAutoRefresh;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.   
  22.         this.addPreferencesFromResource(R.xml.mypreference);  
  23.   
  24.         // 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,  
  25.         // 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)  
  26.         mSharedPreferences = PreferenceManager  
  27.                 .getDefaultSharedPreferences(this);  
  28.           
  29.         // 需要注册哦  
  30.         mSharedPreferences.registerOnSharedPreferenceChangeListener(this);  
  31.           
  32.         mIsAutoRefresh = mSharedPreferences.getBoolean("PREF_AUTO_REFRESH",  
  33.                 false);  
  34.         Log.d("test""isAutoRefresh: " + mIsAutoRefresh);  
  35.   
  36.     }  
  37.   
  38.     @Override  
  39.     public boolean onCreateOptionsMenu(Menu menu) {  
  40.         // Inflate the menu; this adds items to the action bar if it is present.  
  41.         getMenuInflater().inflate(R.menu.main, menu);  
  42.         return true;  
  43.     }  
  44.   
  45.     @Override  
  46.     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,  
  47.             String key) {  
  48.         Log.d("test""key: " + key);  
  49.         //根据其值,可以做相应的处理  
  50.         //这个值改过以后,是会被存下来哦~~存在某个.xml文件夹中的  
  51.         mIsAutoRefresh = mSharedPreferences.getBoolean(key, false);  
  52.         Log.d("test""isAutoRefresh: " + mIsAutoRefresh);  
  53.   
  54.     }  
  55.   
  56. }  
package com.example.preferencedemo;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;

//当SharedPreferences发生变化的时候,可以监听其变化,并作出相应的处理
public class MainActivity extends PreferenceActivity implements
		OnSharedPreferenceChangeListener {

	private SharedPreferences mSharedPreferences;
	private boolean mIsAutoRefresh;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		this.addPreferencesFromResource(R.xml.mypreference);

		// 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,
		// 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)
		mSharedPreferences = PreferenceManager
				.getDefaultSharedPreferences(this);
		
		// 需要注册哦
		mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
		
		mIsAutoRefresh = mSharedPreferences.getBoolean("PREF_AUTO_REFRESH",
				false);
		Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
			String key) {
		Log.d("test", "key: " + key);
		//根据其值,可以做相应的处理
		//这个值改过以后,是会被存下来哦~~存在某个.xml文件夹中的
		mIsAutoRefresh = mSharedPreferences.getBoolean(key, false);
		Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);

	}

}


PS: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值