文章类型: ANDROID
关键词: Android,,SharedPreferences,简单,用法,试例
内容摘要: Android 中 SharedPreferences 的简单用法试例

Android 中 SharedPreferences 的简单用法试例

2019/11/1 11:22:06    来源:apple    阅读:

SharedPreferences 是一个轻量级的存储类,主要是保存一些小的数据,一些状态信息

实现:
1、确定要保存的是什么数据后,写个 SharedPreferences  存储类
2、获取到数据后,调用 SharedPreferences  存储类将数据保存
3、调用 SharedPreferences  存储类将数据取出,并展示出来

效果:
获取数据保存

1.jpg

获取数据展示

2.jpg

实现详情:

1、确定要保存的是什么数据后,写个 SharedPreferences  存储类
我的构思是将注册时的信息保存在 SharedPreferences  中,在其他地方还需要用到
注册信息有 :账号、密码、性别、年龄

如果还有其他数据需要保存,也只要根据需求添加 get、set 方法就好了

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Created by Administrator on 2018/3/22 0022.
 * 保存一些简单的数据
 */

public class MySharedPreferences {

    //创建一个SharedPreferences    类似于创建一个数据库,库名为 data
    public static SharedPreferences share(Context context){
        SharedPreferences sharedPreferences = context.getSharedPreferences("date", Context.MODE_PRIVATE);
        return sharedPreferences;
    }

    //name 账号
    //调用上面的 share(Context context) 方法 获取标识为 "name" 的数据
    public static Object getName(Context context){
        return share(context).getString("name",null);
    }
    //调用上面的 share(Context context) 方法 将数据存入,并标识为 "name"
    //使用 commit() 方法保存会给出反应(保存成功或失败)
    public static boolean setName(String name, Context context){
        SharedPreferences.Editor e = share(context).edit();
        e.putString("name",name);
        Boolean bool = e.commit();
        return bool;
    }

    //pswd 密码
    public static String getPswd(Context context){
        return share(context).getString("pswd",null);
    }
    //这里使用的是 apply() 方法保存,将不会有返回值
    public static void setPswd(String pswd, Context context){
        SharedPreferences.Editor e = share(context).edit();
        e.putString("pswd",pswd);
        e.apply();
    }

    /**
     * 可以根据需求选择用那种方式保存数据
     * (需不需要告诉你有没有保存成功)
     */

    //sex 性别
    public static String getSex(Context context){
        return share(context).getString("sex",null);
    }
    public static void setSex(String sex, Context context){
        SharedPreferences.Editor e = share(context).edit();
        e.putString("sex",sex);
        e.apply();
    }

    //age 年龄
    public static String getAge(Context context){
        return share(context).getString("age",null);
    }
    public static void setAge(String age, Context context){
        SharedPreferences.Editor e = share(context).edit();
        e.putString("age",age);
        e.apply();
    }
    
}

从上面可以看到,我创建了一个 MySharedPreferences  类,

在类中创建了SharedPreferences  后,为每个需要存储的都写了 set 、get 方法

通过 set 、 get方法来 保存和获取 需要的数据。

同时,我的试例中有两种保存方法: commit() 和 apply()

commit() 方法会返回保存状态(成功返回 true,失败返回 false)

apply() 方法则没有任何返回

可以根据需要自由使用


2、获取到数据后,调用 SharedPreferences  存储类将数据保存

第二步分为获取数据和保存数据

获取数据:
我这里是通过在 EditText 输入获取数据,其实数据来源可以根据自己需求来

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.win.sharedprefences.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:textColor="#000000"
        android:text="保存数据"/>

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="账号:"/>

    <EditText
        android:id="@+id/pswd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="密码:"/>

    <EditText
        android:id="@+id/sex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="性别:"/>

    <EditText
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="年龄:"/>

    <Button
        android:id="@+id/submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交保存"/>
    
</LinearLayout>

这个界面就是上面展示的“获取数据保存”界面

保存数据:

通过用户输入,我们获取到了将要保存起来的数据,接下来我们把它们保存起来

第一步在 MySharedPreferences类 定义了保存数据的 set方法,调用就好了

//点击事件(获取数据,存入SharedPreferences)
submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //获取输入框的内容
        String names = name.getText().toString();
        String pswds = pswd.getText().toString();
        String sexs = sex.getText().toString();
        String ages = age.getText().toString();

        //在 MySharedPreferences类里定义好存取方法后,就可以调用了
        //这里将数据保存进去  注意:(name 我是定义了有返回值的,试试看)
        Boolean bool = MySharedPreferences.setName(names, MainActivity.this);
        MySharedPreferences.setPswd(pswds, MainActivity.this);
        MySharedPreferences.setSex(sexs,   MainActivity.this);
        MySharedPreferences.setAge(ages,   MainActivity.this);

        //看看保存成功没
        if(bool)
            Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(MainActivity.this, "保存失败!", Toast.LENGTH_SHORT).show();

        //跳转到展示界面
        startActivity(new Intent(MainActivity.this, Main2Activity.class));
    }
});

这里就展示核心就好了


3、调用 SharedPreferences  存储类将数据取出,并展示出来

从第二步的代码中可以看到,当点击了保存数据按钮后,就会跳到展示界面去

展示界面就是上面效果中的“获取数据展示”所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.win.sharedprefences.Main2Activity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:textColor="#000000"
        android:text="使用数据"/>

    <Button
        android:id="@+id/obtain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取数据"/>

    <TextView
        android:id="@+id/one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/three"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/four"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

布局大家应该都会

我的定义是,点击展示按钮就获取数据,将数据展示在 TextView 中

获取数就调用 MySharedPreferences类中定义好的 get 方法

//获取保存好的数据并展示出来
obtain.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //通过MySharedPreferences类里定义好的存取方法,获取保存在里面的数据
        String names = (String) MySharedPreferences.getName(Main2Activity.this);
        String pswds = (String) MySharedPreferences.getPswd(Main2Activity.this);
        String sexs =  (String)  MySharedPreferences.getSex(Main2Activity.this);
        String ages =  (String)  MySharedPreferences.getAge(Main2Activity.this);

        //将数据放到 TextView 展示出来
        one.setText("账号:" + names);
        two.setText("密码:" + pswds);
        three.setText("性别:" + sexs);
        four.setText("年龄:" + ages);
    }
});

注释: SharedPreferences 的使用可以根据自己需求灵活运用,

            里面保存的值需要改变的时候,在调用一下 set 方法就行了

            同样的标识会被覆盖掉


源码:https://github.com/iscopy/SharedPreferences

↑ 上一篇文章:Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法 关键词:Plugin,with,id,,com,github.d.. 发布日期:2019/10/31 14:54:37
↓ 下一篇文章:java String去除两端的空格和空字符 关键词:java,String,去除,两端,空格,空字符 发布日期:2019/12/20 16:03:04
相关文章:
sql语句妙用,各种sql语句的详细用法与讲解 关键词:sql,server,database,详细,用法,讲解 发布日期:2015-07-29 14:31
检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式) 关键词:检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式) 发布日期:2017-07-24 09:29
从Java到C++——数组的用法 关键词:从Java到C++——数组的用法 发布日期:2017-09-08 09:28
相关目录:.NETANDROIDJAVA
我要评论
正在加载评论信息......