seeting菜单界面形成--优化
来源:互联网 发布:盛杰网络课下载 编辑:程序博客网 时间:2024/05/02 01:29
上文中有很多方法都是过时,并且效率不是很高,主要对JAVA代码进行了优化,下面是优化后的代码:
MainActivity.java:
package com.zzw.testpreferenceactivity;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingFragment()).commit(); }}
SettingFragment.java:
package com.zzw.testpreferenceactivity;import java.util.Iterator;import java.util.Set;import android.content.SharedPreferences;import android.content.SharedPreferences.OnSharedPreferenceChangeListener;import android.os.Bundle;import android.preference.CheckBoxPreference;import android.preference.EditTextPreference;import android.preference.ListPreference;import android.preference.MultiSelectListPreference;import android.preference.PreferenceFragment;import android.preference.PreferenceManager;import android.preference.SwitchPreference;import android.widget.Toast;public class SettingFragment extends PreferenceFragment { private final String CHECKBOXPREFERENCE_KEY1 = "checkbox_key1"; private final String EDITTEXTPREFERENCE_KEY1 = "edit_key1"; private final String LISTPREFERENCE_KEY = "listPreferenc_key"; private final String MULTISELECTLISTPREFERENCE_KEY = "multiSelectListPreference_key"; private final String SWITCHPREFERENCE_KEY = "switchPreference_key1"; private SharedPreferences mSharedPreferences; private OnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener; private CheckBoxPreference mCheckBoxPreference; private EditTextPreference mEditTextPreference; private ListPreference mListPreference; private MultiSelectListPreference mMultiSelectListPreference; private SwitchPreference mSwitchPreference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 添加设置的选项 addPreferencesFromResource(R.xml.first_preference); mCheckBoxPreference = (CheckBoxPreference) findPreference(CHECKBOXPREFERENCE_KEY1); mEditTextPreference = (EditTextPreference) findPreference(EDITTEXTPREFERENCE_KEY1); mListPreference = (ListPreference) findPreference(LISTPREFERENCE_KEY); mMultiSelectListPreference = (MultiSelectListPreference) findPreference(MULTISELECTLISTPREFERENCE_KEY); mSwitchPreference = (SwitchPreference) findPreference(SWITCHPREFERENCE_KEY); // 获取SharedPreferences对象 mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); // 通用的读取设置的某个值的方法 // boolean b = mSharedPreferences.getBoolean("checkbox_key1", false); // Log.d("checkbox_key1", b+""); // // String s = mSharedPreferences.getString("edit_key1", "暂时为空"); // Log.d("edit_key1", s); mOnSharedPreferenceChangeListener = new MyOnSharedPreferenceChangeListener(); } // 数据发生变化时候的监听类设置 private class MyOnSharedPreferenceChangeListener implements OnSharedPreferenceChangeListener { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { switch (key) { case CHECKBOXPREFERENCE_KEY1: boolean b = sharedPreferences.getBoolean(CHECKBOXPREFERENCE_KEY1, false); mCheckBoxPreference.setSummary(b + ""); break; case EDITTEXTPREFERENCE_KEY1: String s = sharedPreferences.getString(EDITTEXTPREFERENCE_KEY1, "null"); mEditTextPreference.setSummary(s); break; case LISTPREFERENCE_KEY: String e = mListPreference.getEntry() + ""; String v = mListPreference.getValue(); mListPreference.setSummary(e + " : " + v); break; case MULTISELECTLISTPREFERENCE_KEY:// String s_entries = "entries:";//// CharSequence[] entries = mMultiSelectListPreference.getEntries();// for (CharSequence c : entries) {// s_entries += c + "" + "\t";// }//// Set<String> values = mMultiSelectListPreference.getValues();// Iterator<String> it = values.iterator();// String s_values = "values:";// while (it.hasNext()) {// s_values += it.next().toString() + "\t";// }// mMultiSelectListPreference.setSummary(s_entries + "\n" + s_values); break; case SWITCHPREFERENCE_KEY: boolean boo = sharedPreferences.getBoolean(SWITCHPREFERENCE_KEY, false); mSwitchPreference.setSummary(boo + ""); break; default: break; } } } @Override public void onResume() { super.onResume(); // 注册数据发生变化时候的监听 mSharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener); // getPreferenceScreen().getSharedPreferences() // .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener); } @Override public void onPause() { super.onPause(); // 取消数据发生变化时候的监听 mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener); // getPreferenceScreen().getSharedPreferences() // .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener); }}
主要优化的地方有:①、使用了switch,提高了效率(Jdk1.7以上,包括1.7)
②、把seeting菜单改变时的监听提取了出来,降低了代码的耦合度
0 0
- seeting菜单界面形成--优化
- setting菜单界面的形成--未优化
- 菜单优化
- 怎么优化源代码,源代码的形成是什么?
- 界面优化
- CSS界面菜单
- android--菜单界面
- 场景切换,菜单界面
- Swing界面菜单演示
- 简易菜单界面
- 简易菜单界面
- 利用js和servlet的形成下拉菜单联动
- Android UI设计和形成原理(实现三级菜单)
- 示例学习-树形菜单的形成---使用vue.js
- 三级菜单(2)优化
- 菜单界面测试用例
- Android Studio界面菜单翻译
- 界面设置按钮菜单设置
- Unable to allocate and lock memory. The virtual machine will be paused. Please close applications to
- 网站信息采集
- 为OLED屏增加GUI支持1:OLED驱动
- ubuntu 下修改mantis bug严重等级为 A,B,C,D,E
- “[DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在或拒绝访问 ”的解决方法之一
- seeting菜单界面形成--优化
- MPAndroidChart开源图表库(一)之饼状图
- Java并发库(十九):同步集合类的使用BlockingQueue、
- 训练自己
- 画画板--第三方开源--DrawableView
- bless 概念
- AngularJS进阶(二十二)实现时间选择插件
- 微信编辑器——构思编辑器教你如何学好图文排版
- angular学习日志06 form表单 ng-submit