PreferenceActivity是Activity的子类,可以方便的实现设置界面。
PreferenceActivity会通过一个xml配置文件来描述设置界面,并且系统会自动保存当前设置的最后状态。
使用步骤:
1、编写一个类继承自PreferenceActivity的子类。
//默认会把key-value 存储在 包.xml中。再次访问Activity时,也是默认从 包.xml中读取 addPreferencesFromResource(R.xml.pref);
2、在res/xml目录中建立一个用于描述设置界面的xml文件
a,新建一个xml目录
b,新建一个pref.xml
c、创建如下结果的文件
显示结果如下:
重新进入后保存了之前设置的值,因为PreferenceActivity中,会默认读取 包.xml 来设置默认值。
问题一:可否修改PreferenceActivity保存数据的文件名。
答:PreferenceActivity内部使用了SharedPreferences对象保存数据,默认存储路径和文件名都和后者相同,路径是:shared_prefs/包.xml .
getPreferenceManager().setSharedPreferencesName("setting");
上述方法修改默认的文件名为 setting.xml 但是需要注意的是,文件名修改后,重新访问这个Activity的时候不会自动读取setting.xml中的文件。因为默认读取的是 包.xml 这个文件,故建议不修改。
问题二: 上面案例中的EditTextPreference 中,填写用户名后点击确定,页面摘要地方不显示输入内容。
public class MainActivity3 extends PreferenceActivity { SharedPreferences pref; EditTextPreference etp, etp_phone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); // getPreferenceManager().setSharedPreferencesName("setting"); try { etp = (EditTextPreference) findPreference("individual_name"); etp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary(newValue.toString()); return true; // 是否写入xml } }); etp_phone = (EditTextPreference) findPreference("mobile"); etp_phone .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange( Preference preference, Object newValue) { preference.setSummary(newValue.toString()); return true; } }); ListPreference list = (ListPreference) findPreference("list_sort"); // OnSharedPreferenceChanged监听事件必须进行注册 list.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String[] ss = getResources().getStringArray( R.array.pref_entries); preference.setSummary("Current value is " + ss[Integer.parseInt(newValue.toString()) - 1]); return true;// 是否写入xml } }); } catch (Exception e) { e.printStackTrace(); } } }
说明:本文参照李宁老师的《Android高薪之路》
相关推荐
Android数据存储——SharedPreferences实现登入记住密码功能。
Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...
Android数据存储之SharedPreferences,自己根据文档编写的代码,有需要的就下载吧。
NULL 博文链接:https://zhujianjia.iteye.com/blog/1042048
利用数据存储的SharedPreferences开发技术,实现了一个简易的登录界面,可以记住登录密码等。
使用SharedPreferences的小项目。
Android 3种数据保存(SharedPreferences存储 内部文件存储 数据库存储),如项目包有问题请联系我谢谢
Jetpack DataStore 是一种改进的新数据存储解决方案,允许使用协议缓冲区存储键值对或类型化对 象。 DataStore 以异步、一致的事务方式存储数据,克服了 SharedPreferences(以下统称为SP)的 一些缺点。 DataStore ...
Android使用SharedPreferences和SQLite数据库实现数据存储
嵌入式Android项目设计与开发 第六章 数据存储 ——SharedPreferences 2 SharedPreferences 键值对概念: 某一个数据都由一个键和一个值构成,键代表数据的名称,它是全局唯一的。具体的数据内容存放在值中。 键值对...
在Android使用SharedPreferences实现自动登录
Android 系统中主要提供了三种方式用于实现数据持久化功能,分别是: 1、文件存储 2、SharedPreference 存储 3、数据库存储。SharedPreferences 是使用键值对的方式来存储数据的,使用 SharedPreferences来进行数据...
Android 使用SharedPreferences实现数据的读写
安卓Android源码——SharedPreferences.rar
android studio 利用SharedPreferences实现自动登录(可以自己选择记住密码和直接登录)
实验三 Android数据存储 一、实验目的及要求 (1) 掌握Android的SharedPreferences的使用 (2) 掌握在Android中使用SQLite的方法 二、实验内容及步骤 任务:根据下述要求实现对应程序 1、 根据所给界面1完成登入...
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。比较经典的使用方式例如用户输入框对过往登录账户的存储。 详细介绍请参考博文:...
Android系统SharedPreferences进行的封装
android,SharedPreferences
因此,我们来学习一下Android的另外一种存储方式,SharedPreferences存储,它是一种数据持久化的方式,它比文件存储更加简单易用。 将数据存储到SharedPreferences中 不同于文件存储的方式,SharedPreferences是使用...