Android studio 持久化存储_SharedPreferences存储

不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。通过唯一的键去取相对应的值, SharedPreferences可以支持多种不同的数据存储类型,存进去什么类型,取出来什么类型。个人补充:其实这种存储方式就是存储在项目中,可以直接在活动和类中调用。

1.1将数据存储到SharedPreferences中

        想要使用SharedPreferences存储数据,首先获得SharedPreferences对象,Android中有3中方法用于得到SharedPreferences对象,我们这里就介绍一种方法:

就用最常用的Context类中的getSharedPreferences()方法

        首先要明白这是一个静态方法(不需要 new/创建对象),此方法接收俩个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences文件都是存放 /data/data/<package name>/shared_prefs/目录下的。第二个参数用于指定操作模式,用MODE_PRIVATE模式就好,也可以直接传入0,效果是相同的,表示只有当前应用程序才可以对这个SharedPreferences文件进行读写。SharedPreferences文件得SharedPreferences对象之后,就可以向SharedPreferences文件中储存数据了,主要可以分为三步实现。

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

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

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

        下面用代码给大家展示以下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <!--这个按钮用于点击存储数据-->
    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="存储数据"
        android:layout_gravity="center_horizontal"
        />
    <!--这个按钮用于点击输出已存储的数据-->
    <Button
        android:id="@+id/receive"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="接收数据"
        android:layout_gravity="center_horizontal"
        />
    <!--这个文本控件用于显示输出已存储的数据-->
    <TextView
        android:id="@+id/display"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输出显示"
        android:textSize="30sp"
        />

</LinearLayout>

效果图如下:

后端代码:

package com.example.sharedpreferencestest01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button send;
    private Button receive;
    private TextView display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send = (Button) findViewById(R.id.send);/*存储数据按钮*/
        receive = (Button) findViewById(R.id.receive);/*接收输出数据按钮*/
        display = (TextView) findViewById(R.id.display);/*显示输出数据按钮*/
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*
                * 通过getSharedPreferences()方法指定SharedPreferences文件名为data(没有则会创建),默认0
                * 并得到SharedPreferences.Editor对象;
                * */
                SharedPreferences.Editor edit = getSharedPreferences("data", 0).edit();
                /*向这个对象(edit)添加数据*/
                edit.putString("姓名","张三");
                edit.putInt("电话",110);
                edit.putString("性别","男");
                /*调用apply()方法提交,从而完成存储操作*/
                edit.apply();
                /*显示提交数据是否成功*/
                Toast.makeText(MainActivity.this, "数据存储成功!", Toast.LENGTH_SHORT).show();
            }
        });
        receive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*
                * 通过getSharedPreferences()得到SharedPreferences对象
                * */
                SharedPreferences data = getSharedPreferences("data", 0);
                /*分别调用get+数据类型,去获取前面所存储的姓名等等,如果没有找到相对应的值,则会用方法中的默认值来代替。*/
                String name = data.getString("姓名","");
                int telephone = data.getInt("电话",0);
                String gender = data.getString("性别", "");
                /*最后将结果输出到文本框中*/
                display.setText("姓名: "+name+", 性别: "+gender+", 电话: "+telephone);
            }
        });
    }
}

效果图:

 好了,简单用法就到这里了,有错误地方还请大家多多指教。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值