【Android】安卓学习笔记之使用SharedPreferences 读写数据

来源:互联网 发布:知乎app ipad 编辑:程序博客网 时间:2024/05/16 01:53

1、将数据存储到SharedPreferences中

       新建一个SharedPreferencesTest项目,然后修改activity_main.xml中的代码,如下所示:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/save_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Savedata"/></LinearLayout>

       这里我们不做任何复杂的功能,只是简单地放置了一个按钮,用于将一些数据存储到SharedPreferences文件当中。然后修改MainActivity中的代码,如下所示:
public class MainActivity extends Activity {private Button saveData;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);saveData = (Button) findViewById(R.id.save_data);saveData.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();editor.putString("name", "Tom");editor.putInt("age", 28);editor.putBoolean("married", false);editor.commit();}});}}
      可以看到, 这里首先给按钮注册了一个点击事件, 然后在点击事件中通过getSharedPreferences()方法指定SharedPreferences的文件名为data,并得到了SharedPreferences.Editor对象。接着向这个对象中添加了三条不同类型的数据,最后调用commit()方法进行提交,从而完成了数据存储的操作。
很简单吧?现在就可以运行一下程序了,进入程序的主界面后,点击一下Save data 按钮。这时的数据应该已经保存成功了,不过为了要证实一下,我们还是要借助File Explorer来进行查看。切换到DDMS 视图,并点击File Explorer 切换卡,然后进入到/data/data/com.example.sharedpreferencestest/shared_prefs /目录下,可以看到生成了一个data.xml 文件,如图所示。


2 、从SharedPreferences 中读取数据

      我们还是通过例子来实际体验一下吧,仍然是在SharedPreferencesTest 项目的基础上继续开发,修改activity_main.xml 中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <Button        android:id="@+id/save_data"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Save data" />    <Button        android:id="@+id/restore_data"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Restore data" /></LinearLayout>

这里增加了一个还原数据的按钮,我们希望通过点击这个按钮来从SharedPreferences 文件中读取数据。修改MainActivity 中的代码,如下所示:
public class MainActivity extends Activity {private Button saveData;private Button restoreData;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);saveData = (Button) findViewById(R.id.save_data);restoreData = (Button) findViewById(R.id.restore_data);restoreData.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);String name = pref.getString("name", "");int age = pref.getInt("age", 0);boolean married = pref.getBoolean("married", false);Log.d("MainActivity", "name is " + name);Log.d("MainActivity", "age is " + age);Log.d("MainActivity", "married is " + married);}});}}

      可以看到,我们在还原数据按钮的点击事件中首先通过getSharedPreferences()方法得到了SharedPreferences 对象,然后分别调用它的getString()、getInt()和getBoolean()方法去获取前面所存储的姓名、年龄和是否已婚,如果没有找到相应的值就会使用方法中传入的默认值来代替,最后通过Log 将这些值打印出来。
现在重新运行一下程序,并点击界面上的Restore data 按钮,然后查看LogCat 中的打印信息,如图所示。


       所有之前存储的数据都成功读取出来了!通过这个例子,我们就把SharedPreferences 存储的知识也学习完了。相比之下,SharedPreferences 存储确实要比文本存储简单方便了许多,应用场景也多了不少,比如很多应用程序中的偏好设置功能其实都使用到了SharedPreferences技术。

之前写了一个例子就是用到这和技术的,仅供参考。
传送门: 【Android】记住密码功能的实现
0 0
原创粉丝点击