摘要:保存路径如下包名包名使用方法一般在文件夹中创建文件来对进行布局,布局文件中通常使用容器,包含多个控件,可以设置分类标题。在之前需要继承此方法不是太推荐使用,已被启用,之后更高版本,则需要继承,使用控制布局,然后实现不同控件的处理事件。
极力推荐文章:欢迎收藏
Android 干货分享
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
Perference 简介
Perference 使用方法
使用XML定义Preference
使用Fragment 定义Preference
实现效果
Preference 在Android 中重要的控件之一,比如 Settings 模块大部分都是通过Preference 实现的,本章将研究preference 使用方法
1.Preference 简介 Preference 继承关系java.lang.Object ↳ android.preference.Preference
Preference 常用于APP 设置模块,比如 Android 系统中的Settings 模块,它可以默认把我们的数据保存在SharePreference中。
键值对(key-values) 获取方法同 SharePreference
SharedPreferences mSp = PreferenceManager.getDefaultSharedPreferences(this); String favPhone = mSp.getString(PREF_LISTPHONE, "MI");
Preference 数据保存
Preference通过key-values 键值对的形式保存。
保存路径如下:
/data/data/包名/shared_prefs/包名_preferences.xml
一般在XML文件夹中创建xml 文件来对Settings进行布局,布局文件中通常使用PreferenceScreen容器,PreferenceScreen 包含多个 Preference 控件,PreferenceCategory 可以设置分类标题。
常用Preference 控件如下:
PreferenceScreen
CheckBoxPreference
EditTextPreference
ListPreference
PreferenceCategory
RingtonePreference.
上面控件等同Layout布局中的View,PreferenceScreen 等同Layout布局中的ViewGroup。在Android 3.0 之前需要继承PreferenceActivity(此方法不是太推荐使用,已被启用),3.0 之后更高版本,则需要继承Activity,使用Fragment 控制布局,然后实现不同控件的处理事件。
Perference 常用使用方法如下两种:
使用XML定义Preference
使用Fragment 定义Preference
3. 使用XML定义Preference此方法有点过时,不太建议使用,但目前还可以用。
其使用方法如下:
将XML 文件保存在 res/xml/ 目录中 例如: preferences.xml
继承PreferenceActivity在 onCreate方法中直接调用addPreferencesFromResource(R.xml.preference);添加布局
点击事件处理setOnPreferenceClickListener ,内容发生改变事件处理 setOnPreferenceChangeListener
Preference使用案例如下:
res /xml /preferences.xml
Activity 处理方法
public class PreferenceMethods extends PreferenceActivity implements OnPreferenceClickListener, OnPreferenceChangeListener { public static final String PREF_BLUE = "pref_blue"; public static final String PREF_LISTPHONE = "pref_fav_phone"; public static final String PREF_CITY = "fav_city"; public static final String PREF_RING = "pref_ring"; private CheckBoxPreference mBlueCheckPreference; private ListPreference mFavPhoneListPreference; private EditTextPreference mFavCityEdPreference; private RingtonePreference mRingtonePreference; private SwitchPreference mSwitchPreference; private SharedPreferences mSp; boolean isCheck; @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); mSp = PreferenceManager.getDefaultSharedPreferences(this); isCheck = mSp.getBoolean(PREF_BLUE, true); String favPhone = mSp.getString(PREF_LISTPHONE, "MI"); mBlueCheckPreference = (CheckBoxPreference) findPreference(PREF_BLUE); mFavPhoneListPreference = (ListPreference) findPreference(PREF_LISTPHONE); mFavCityEdPreference = (EditTextPreference) findPreference(PREF_CITY); mRingtonePreference = (RingtonePreference) findPreference(PREF_RING); mSwitchPreference = (SwitchPreference) findPreference("sw_perference"); // mSwitchPreference.setEnabled(false); mSwitchPreference.setChecked(true); mSwitchPreference.setShouldDisableView(true); mFavPhoneListPreference.setSummary("ffffdd"); mFavPhoneListPreference.setOnPreferenceClickListener(this); mFavPhoneListPreference.setOnPreferenceChangeListener(this); mFavPhoneListPreference.setValueIndex(3); mBlueCheckPreference.setChecked(isCheck); mBlueCheckPreference.setOnPreferenceClickListener(this); mBlueCheckPreference.setOnPreferenceChangeListener(this); String favCity = mSp.getString(PREF_CITY, "成都"); mFavCityEdPreference.setOnPreferenceClickListener(this); mFavCityEdPreference.setOnPreferenceChangeListener(this); mFavCityEdPreference.setSummary(favCity); String favRingtone = mSp.getString(PREF_RING, "十年"); mRingtonePreference.setSummary(favRingtone); mRingtonePreference.setOnPreferenceChangeListener(this); mRingtonePreference.setOnPreferenceClickListener(this); } @Override public boolean onPreferenceClick(Preference preference) { return true; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (mBlueCheckPreference.equals(preference)) { isCheck = !isCheck; mBlueCheckPreference.setChecked(isCheck); } if (mFavPhoneListPreference.equals(preference)) { mFavPhoneListPreference.setSummary(newValue.toString()); } if (mFavCityEdPreference.equals(preference)) { mFavCityEdPreference.setSummary(newValue.toString()); } if (preference.equals(mRingtonePreference)) { mRingtonePreference.setSummary(newValue.toString()); } return true; } }4. 使用Fragment 定义Preference
此方法比较建议是使用,如需了解Fragment 使用方法,请看Fragment 使用详解
首先自定Fragment片段
a.自定义 SettingsFragment
public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preference); } }
b.preference 实现
Activity 中调用Fragment
public class SettingPreferenceActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_preference); getFragmentManager().beginTransaction() .replace(R.id.fm_pref, new SettingsFragment()).commit(); } }
填充布局
5.实现效果如下:
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75896.html
摘要:简介是平台上一个轻量级数据存储方式,用来保存应用的一些常用配置,比如状态,暂停时,将此的状态保到中当重载,系统回调方法时,再从中将值取出。提供了常规的等类型数据的保存接口。一般这个文件存储在下是指定读写方式,其值有四种。 简介 SharedPreferences是Android平台上一个轻量级数据存储方式,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,...
阅读 1441·2023-04-25 19:00
阅读 4135·2021-11-17 17:00
阅读 1752·2021-11-11 16:55
阅读 1510·2021-10-14 09:43
阅读 3107·2021-09-30 09:58
阅读 850·2021-09-02 15:11
阅读 2117·2019-08-30 12:56
阅读 1398·2019-08-30 11:12