星空网 > 软件开发 > 操作系统

seeting菜单界面形成

本文是上一篇文章的优化版:

上文链接地址:http://www.cnblogs.com/zzw1994/p/5016864.html

上文中有很多方法都是过时,并且效率不是很高,主要对JAVA代码进行了优化,下面是优化后的代码:

seeting菜单界面形成images/loading.gif' data-original="http://images2015.cnblogs.com/blog/822717/201512/822717-20151203172642627-1165153111.png" />

 

MainActivity.java:

 1 package com.zzw.testpreferenceactivity; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5  6 public class MainActivity extends Activity { 7  8   @Override 9   protected void onCreate(Bundle savedInstanceState) {10     super.onCreate(savedInstanceState);11 12     this.getFragmentManager().beginTransaction()13     .replace(android.R.id.content, new SettingFragment()).commit();14   }15 16 }

 

SettingFragment.java:

 1 package com.zzw.testpreferenceactivity; 2  3 import java.util.Iterator; 4 import java.util.Set; 5  6 import android.content.SharedPreferences; 7 import android.content.SharedPreferences.OnSharedPreferenceChangeListener; 8 import android.os.Bundle; 9 import android.preference.CheckBoxPreference; 10 import android.preference.EditTextPreference; 11 import android.preference.ListPreference; 12 import android.preference.MultiSelectListPreference; 13 import android.preference.PreferenceFragment; 14 import android.preference.PreferenceManager; 15 import android.preference.SwitchPreference; 16 import android.widget.Toast; 17  18 public class SettingFragment extends PreferenceFragment { 19  20   private final String CHECKBOXPREFERENCE_KEY1 = "checkbox_key1"; 21   private final String EDITTEXTPREFERENCE_KEY1 = "edit_key1"; 22   private final String LISTPREFERENCE_KEY = "listPreferenc_key"; 23   private final String MULTISELECTLISTPREFERENCE_KEY = "multiSelectListPreference_key"; 24   private final String SWITCHPREFERENCE_KEY = "switchPreference_key1"; 25  26   private SharedPreferences mSharedPreferences; 27   private OnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener; 28  29   private CheckBoxPreference mCheckBoxPreference; 30   private EditTextPreference mEditTextPreference; 31   private ListPreference mListPreference; 32   private MultiSelectListPreference mMultiSelectListPreference; 33   private SwitchPreference mSwitchPreference; 34  35   @Override 36   public void onCreate(Bundle savedInstanceState) { 37     super.onCreate(savedInstanceState); 38  39     // 添加设置的选项 40     addPreferencesFromResource(R. 41  42     mCheckBoxPreference = (CheckBoxPreference) findPreference(CHECKBOXPREFERENCE_KEY1); 43     mEditTextPreference = (EditTextPreference) findPreference(EDITTEXTPREFERENCE_KEY1); 44     mListPreference = (ListPreference) findPreference(LISTPREFERENCE_KEY); 45     mMultiSelectListPreference = (MultiSelectListPreference) findPreference(MULTISELECTLISTPREFERENCE_KEY); 46     mSwitchPreference = (SwitchPreference) findPreference(SWITCHPREFERENCE_KEY); 47  48     // 获取SharedPreferences对象 49     mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); 50  51     // 通用的读取设置的某个值的方法 52     // boolean b = mSharedPreferences.getBoolean("checkbox_key1", false); 53     // Log.d("checkbox_key1", b+""); 54     // 55     // String s = mSharedPreferences.getString("edit_key1", "暂时为空"); 56     // Log.d("edit_key1", s); 57  58     mOnSharedPreferenceChangeListener = new MyOnSharedPreferenceChangeListener(); 59   } 60  61   // 数据发生变化时候的监听类设置 62   private class MyOnSharedPreferenceChangeListener implements OnSharedPreferenceChangeListener { 63  64     @Override 65     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 66       switch (key) { 67       case CHECKBOXPREFERENCE_KEY1: 68  69         boolean b = sharedPreferences.getBoolean(CHECKBOXPREFERENCE_KEY1, false); 70         mCheckBoxPreference.setSummary(b + ""); 71         break; 72  73       case EDITTEXTPREFERENCE_KEY1: 74  75         String s = sharedPreferences.getString(EDITTEXTPREFERENCE_KEY1, "null"); 76         mEditTextPreference.setSummary(s); 77         break; 78  79       case LISTPREFERENCE_KEY: 80  81         String e = mListPreference.getEntry() + ""; 82         String v = mListPreference.getValue(); 83         mListPreference.setSummary(e + " : " + v); 84         break; 85  86       case MULTISELECTLISTPREFERENCE_KEY: 87  88 //        String s_entries = "entries:"; 89 // 90 //        CharSequence[] entries = mMultiSelectListPreference.getEntries(); 91 //        for (CharSequence c : entries) { 92 //          s_entries += c + "" + "\t"; 93 //        } 94 // 95 //        Set<String> values = mMultiSelectListPreference.getValues(); 96 //        Iterator<String> it = values.iterator(); 97 //        String s_values = "values:"; 98 //        while (it.hasNext()) { 99 //          s_values += it.next().toString() + "\t";100 //        }101 //        mMultiSelectListPreference.setSummary(s_entries + "\n" + s_values);102         break;103 104       case SWITCHPREFERENCE_KEY:105         106         boolean boo = sharedPreferences.getBoolean(SWITCHPREFERENCE_KEY, false);107         mSwitchPreference.setSummary(boo + "");108         109         break;110       default:111         break;112       }113     }114   }115 116   @Override117   public void onResume() {118     super.onResume();119     // 注册数据发生变化时候的监听120     mSharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);121     // getPreferenceScreen().getSharedPreferences()122     // .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);123   }124 125   @Override126   public void onPause() {127     super.onPause();128     // 取消数据发生变化时候的监听129     mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);130     // getPreferenceScreen().getSharedPreferences()131     // .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);132   }133 }

 

主要优化的地方有:①、使用了switch,提高了效率(Jdk1.7以上,包括1.7)

         ②、把seeting菜单改变时的监听提取了出来,降低了代码的耦合度




原标题:seeting菜单界面形成

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

2022年亚马逊物流配送费将平均提高5.2%,Allegro发布黑五网购消费趋势:https://www.goluckyvip.com/news/5554.html
“黑五网一”+“圣诞”年末爆单季即将来袭,来看看TikTok热门选品:https://www.goluckyvip.com/news/5555.html
Shopee日出千单是怎么做到的?:https://www.goluckyvip.com/news/5556.html
简单易学!这些TikTok账号涨了数十万粉:https://www.goluckyvip.com/news/5557.html
果然,Shopee在印度摊上事儿了:https://www.goluckyvip.com/news/5558.html
Lazada发布东南亚国家双11大促亮点报告:https://www.goluckyvip.com/news/5559.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流