为了账号安全,请及时绑定邮箱和手机立即绑定

SharedPreferences

标签:
Android

将数据存储到SharedPreferences 中

   要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android

       中主要提供了三种方法用于得到SharedPreferences 对象。

   1. Context 类中的getSharedPreferences()方法

       此方法接收两个参数,第一个参数用于指定SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data/<packagename>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE 和MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操作模式, 和直接传入0 效果是相同的, 表示只有当前的应用程序才可以对这个SharedPreferences 文件进行读写。MODE_MULTI_PROCESS 则一般是用于会有多个进程中对同一个SharedPreferences 文件进行读写的情况。类似地,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE 这两种模式已在Android 4.2 版本中被废弃。

    2. Activity 类中的getPreferences()方法

       这个方法和Context 中的getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharedPreferences 的文件名。

    3. PreferenceManager 类中的getDefaultSharedPreferences()方法

       这是一个静态方法,它接收一个Context 参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences 文件。得到了SharedPreferences 对象之后,就可以开始向SharedPreferences 文件中存储数据了,

      主要可以分为三步实现。

           1. 调用SharedPreferences 对象的edit()方法来获取一个SharedPreferences.Editor 对象。

           2. 向SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用putBoolean 方法,添加一个字符串则使用putString()方法,以此类推。

           3. 调用commit()方法将添加的数据提交,从而完成数据存储操作。

不知不觉中已经将理论知识介绍得挺多了,那我们就赶快通过一个例子来体验一下

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"/>

                   </LinearLayout>

这里我们不做任何复杂的功能,只是简单地放置了一个按钮,用于将一些数据存储到

                SharedPreferences 文件当中。然后修改MainActivity 中的代码,如下所示:

                    public class MainActivity extends Activity {

                    private Button saveData;

                     @Override

                     protected void onCreate(Bundle savedInstanceState) {

                     super.onCreate(savedInstanceState);

                      setContentView(R.layout.activity_main);

                     saveData = (Button) findViewById(R.id.save_data);

                     saveData.setOnClickListener(new OnClickListener() {

                    @Override

                    public 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()方法进行提交,从

而完成了数据存储的操作。

从SharedPreferences 中读取数据

你应该已经感觉到了,使用SharedPreferences 来存储数据是非常简单的,不过下面还有更好的消息,其实从SharedPreferences 文件中读取数据更加的简单。SharedPreferences 对象

中提供了一系列的get方法用于对存储的数据进行读取,每种get方法都对应了SharedPreferences.Editor 中的一种put 方法,比如读取一个布尔型数据就使用getBoolean()方法,读取一个字符串就使用getString()方法。这些get 方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的

值时,会以什么样的默认值进行返回。我们还是通过例子来实际体验一下吧,仍然是在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;
@Override
protected 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() {
@Override
public 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 将这些值打印出来。

原文链接:http://www.apkbus.com/blog-460955-58900.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消