PreferenceActivity 学习

学习了Preference Activity。某度上查找若干文章,查看人家若干代码,并学习了android自带setting sample code。终于有点明白。
下面是参考的code。当share preference有所改变的时候,会监听到其变化,可以做相应的动作。


</pre><pre name="code" class="java">public class PreferenceActivityTest extends PreferenceActivity implements
		OnPreferenceChangeListener, OnPreferenceClickListener {
	static final String TAG = "[PreferenceActivityTest]";
	private static final String APPVersion = "0.00.01";
	private static final String FirmwareVersion = "0.00.02";		
	
	/** 自定义布局A **/
	static Preference preference0 = null;


	/** 自定义布局B **/
	static Preference preference1 = null;


	/** 自定义update2布局 **/
	static Preference preference2 = null;


	/** 自定义update3布局 **/
	static Preference preference3 = null;
	static Preference preference4 = null;
	static Preference preference5 = null;
	static Preference preference6 = null;
	static Preference preference7 = null;	
	


	private static SharedPreferences mPreferences = null;
	private static SharedPreferences.Editor editor = null;
	private static SharedPreferences.OnSharedPreferenceChangeListener mPreferencesListener = null;


	private SharedPreferences mSharedPreferences;	
	
	Context mContext = null;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Log.d(TAG, "onCreate");
		// 该方法用于为该界面设置一个标题按钮
		if (hasHeaders()) {
			Button button = new Button(this);
			button.setText("保存更新");
			button.setWidth(10);
			// 将该按钮添加到该界面上
			setListFooter(button);
		}
		
		mPreferences = PreferenceManager
				.getDefaultSharedPreferences(this);
		editor = mPreferences.edit();
	
		// initPreferences();


	}


	@Override
	public void onResume() {
		super.onResume();
		Log.d(TAG, "onResume");
		// 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,
		// 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)


		mPreferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
			@Override
			public void onSharedPreferenceChanged(
					SharedPreferences sharedPreferences, String key) {
				if ("Playersetting".equals(key))
					Log.d(TAG, "onSharedPreferenceChanged--key:"+key);
				else 
					Log.d(TAG, "onSharedPreferenceChanged--other key:"+key);
			}
		};			
	
		// 需要注册哦
		mPreferences.registerOnSharedPreferenceChangeListener(mPreferencesListener);			
		

	}


	@Override
	public void onPause() {
		super.onPause();
		Log.d(TAG, "onPause");

		 mPreferences.unregisterOnSharedPreferenceChangeListener(
		 mPreferencesListener);
		 mPreferencesListener = null;
	}


	private void initPreferences() {


	}


	// 重写该该方法,负责加载页面布局文件
	@Override
	public void onBuildHeaders(List<Header> target) {
		// 加载选项设置列表的布局文件
		loadHeadersFromResource(R.xml.preference_headers, target);
	}


	public static class Prefs1Fragment extends PreferenceFragment {
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);


			// PreferenceManager.setDefaultValues(getActivity(),R.xml.advanced_preferences,
			// false);


			addPreferencesFromResource(R.xml.preference_player);// preferences
			
			preference6 = findPreference("Playersetting");
			preference7 = findPreference("Mute");
			
			
			//preference6.setOnPreferenceChangeListener((OnPreferenceChangeListener) mPreferencesListener);
			//preference7.setOnPreferenceClickListener(this);
		}


	}


	public static class Prefs2Fragment extends PreferenceFragment {
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.preference_wifi);// display_prefs);//
			// 获取传入该Fragment的参数
			String website = getArguments().getString("website");
			Toast.makeText(getActivity(), "网站域名是:" + website, Toast.LENGTH_LONG)
					.show();
		}
	}


/**
 * 	
 * @author James
 * Update Fragment
 * 
 */
	public static class Prefs3Fragment extends PreferenceFragment {
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.preference_update);// preferences
			
			Log.d(TAG, "Prefs3Fragment onCreate");


			preference2 = findPreference("App_version");
			preference2.setSummary(APPVersion);
			//preference2.setDefaultValue(APPVersion);
			editor.putString("App_version",APPVersion);
			editor.commit();
			

			preference3 = findPreference("Firmware_version");
			preference3.setSummary(FirmwareVersion);
			//preference3.setDefaultValue(FirmwareVersion);
			editor.putString("Firmware_version",FirmwareVersion);		
			editor.commit();
		}
	}
	
/**
 * 
 * @author James
 * self update
 */
	public static class Prefs4Fragment extends PreferenceFragment {
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			// addPreferencesFromResource(R.xml.preference_update);//preferences

			// 从资源文件中添Preferences ,选择的值将会自动保存到SharePreferences
			addPreferencesFromResource(R.xml.self_update);

			preference0 = findPreference("pref_key_0");
			preference0.setSummary("0.01");
			preference0.setDefaultValue("0.01");
			


			preference0
					.setOnPreferenceClickListener(new OnPreferenceClickListener() {


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


			preference1 = findPreference("pref_key_1");
			preference1.setSummary("0.02");
			preference1.setDefaultValue("0.02");


			preference1
					.setOnPreferenceClickListener(new OnPreferenceClickListener() {


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


		}
	}


/**
 * 
 * @author James
 * log
 */
	public static class Prefs5Fragment extends PreferenceFragment {
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.preference_log);// preferences

		}
	}


	@Override
	public boolean onPreferenceClick(Preference preference) {
		Log.d(TAG, "onPreferenceClick!!");
		return false;
	}


	@Override
	public boolean onPreferenceChange(Preference preference, Object newValue) {
		Log.d(TAG, "onPreferenceChange##");
		return false;
	}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值