PreferenceActivity 学习
2015-08-10 11:01
393 查看
学习了Preference Activity。某度上查找若干文章,查看人家若干代码,并学习了android自带setting sample code。终于有点明白。
下面是参考的code。当share preference有所改变的时候,会监听到其变化,可以做相应的动作。
下面是参考的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; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories