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
原创粉丝点击