决定这个暑假在学校多留一个多月,一边自学数据库一边跟着学姐学习安卓开发。目前为止,学姐给了我们两次考核,第一次是在Eclipse上制作一个登录和注册的界面,已经验收。但不得不说,我的界面真是很丑,要是APP的界面都长那样的话,估计没人用我开发的APP。第二次考核内容是在第一次考核的基础上对自己的界面进行优化,并且真正实现登录和注册的功能。

        第二次验收的时间是7月17号下午六点半,因为期末忙着复习考试,留给完成第二次考核的时间只有一个星期,这个星期还要暑期社会实践、写稿,编程时间更紧了。这两天学习了一个小点:获取EditText的内容。在本次考核中,对于我而言最困难的就是实现数据本地保存和读取,看书看视频都注意到了在安卓开发中使用SharePreference实现数据存储和IO,今天在网上搜索了一下,有了不错的收获,利用十分钟的时间将它整理记下以便今后复习使用。


转自一个名叫“jcjzl”的博客,如有侵犯,请与我联系。

android.content.SharedPreferences类,用于在本地保存数据,如用户登录的用户名和密码。SharedPreferences类将数据保存在一个xml文件中,文件存放在/data/data/<package name>/shared_prefs目录下,这跟AS3中的sharedObject有异曲同工之妙。另外一个类android.content.SharedPreferences.Editor用于生成或修改需要保存的数据。类似于SharedObject的data对象+sharedObject的flush()方法。
 //创建异或获取一个已经存在的sharedPreferences对象(单例的) SharedPreferences sharedPreferences = getSharedPreferences("mySP", Context.MODE_PRIVATE);
 //创建数据编辑器 Editor editor = sharedPreferences.edit();
 //传递需要保存的数据 editor.putString("username", "aaa");
 editor.putString("password", “aaa”);
 //保存数据 editor.commit();
 生成的mySP.xml文件内容如下:
 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
 <map>
 <string name="username">aaa</string>
 <string name="password">aaa</string>
 </map> getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称(如mySP,扩展名由Android自动生成;参数mode指定文件的操作权限:Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE可以被其他应用程序读写。
读取SharedPreferences中的数据:
 SharedPreferences sharedPreferences = getSharedPreferences("mySP", Context.MODE_PRIVATE);
 //getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
 String username = sharedPreferences.getString("username", "");
 String password = sharedPreferences.getString("password", ""); 
 如果访问其他应用中的Preference:该preference创建时必须指定Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE权限。通过该应用的Context访问其preference。
Context otherAppsContext = createPackageContext("<package name>", Context.CONTEXT_IGNORE_SECURITY);
 SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("yourSP", Context.MODE_WORLD_READABLE);
 String name = sharedPreferences.getString("somestring", "");
 int age = sharedPreferences.getInt("someInt", 0); File xmlFile = new File(“/data/data/<package name>/shared_prefs/yourSP.xml”);

另,Activity的getPreferences(mode)方法,用于获取当前应用所创建的私有的SharedPreferences对象。