Android学习之使用SharedPreferences存储应用程序数据

让我来为你详细讲解 "Android学习之使用SharedPreferences存储应用程序数据" 的完整攻略。

什么是SharedPreferences?

SharedPreferences是Android中的一个轻量级存储类,用来保存应用程序的配置信息或者一些简单的数据。

SharedPreferences本质上是一个基于XML文件存储键值对的数据结构,易于操作和实现。只要简单的几行代码,就可以实现数据的存储和读取。

使用SharedPreferences存储数据

1.获取SharedPreferences对象

获取SharedPreferences对象需要调用getSharedPreferences()或getPreferences()方法。其中getSharedPreferences()方法是通过指定名称(SharedPreferences文件名称)来获取对象,而getPreferences()方法则是通过使用当前类的类名作为名称来获取对象,这里我们以getSharedPreferences()方法为例。

SharedPreferences sharedPreferences = getSharedPreferences("myData", Context.MODE_PRIVATE);

这里的"myData"代表SharedPreferences文件的名称,Context.MODE_PRIVATE表示文件的访问模式,MODE_PRIVATE代表只能被本应用程序访问。

2.存储数据

使用SharedPreferences存储数据需要通过SharedPreferences.Editor对象来实现,Editor对象中提供了一系列的putXX()方法,可以存储各种类型的数据,如putString()、putBoolean()、putInt()等等。

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "Tom");
editor.putInt("age", 20);
editor.putBoolean("isLogin", true);
editor.apply();

3.读取数据

使用SharedPreferences读取数据也需要通过SharedPreferences对象,可以调用相应的getXX()方法来获取数据,如果获取的key不存在,则返回默认值。

String username = sharedPreferences.getString("username", "");
int age = sharedPreferences.getInt("age", 0);
boolean isLogin = sharedPreferences.getBoolean("isLogin", false);

示例1:使用SharedPreferences存储和读取一个计数器的值

下面是一个示例程序,通过按钮点击实现存储和读取一个计数器的值。点击“+1”按钮,计数器加1并存储到SharedPreferences中;点击“读取”按钮,从SharedPreferences中读取计数器的值并显示在TextView上。

public class MainActivity extends AppCompatActivity {

    private TextView tvCount;
    private int count = 0;
    private SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvCount = findViewById(R.id.tv_count);
        Button btnAdd = findViewById(R.id.btn_add);
        Button btnRead = findViewById(R.id.btn_read);

        sharedPreferences = getSharedPreferences("myCount", Context.MODE_PRIVATE);

        count = sharedPreferences.getInt("count", 0);
        tvCount.setText(String.valueOf(count));

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                count++;
                tvCount.setText(String.valueOf(count));
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt("count", count);
                editor.apply();
            }
        });

        btnRead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                count = sharedPreferences.getInt("count", 0);
                tvCount.setText(String.valueOf(count));
            }
        });
    }
}

在这个例子中,我们通过getSharedPreferences()方法获取了一个SharedPreferences对象,以文件名为"myCount",然后通过SharedPreferences对象来读取、保存计数器的值。

示例2:使用SharedPreferences实现登录状态的保存与读取

下面是一个示例程序,通过EditText输入用户名和密码,点击登录按钮来实现登录操作。如果登录成功,则将登录状态保存到SharedPreferences中;如果退出登录,则将登录状态从SharedPreferences中清除。

public class LoginActivity extends AppCompatActivity {

    private EditText etUsername;
    private EditText etPassword;
    private CheckBox checkBox;
    private SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        etUsername = findViewById(R.id.et_username);
        etPassword = findViewById(R.id.et_password);
        checkBox = findViewById(R.id.checkbox);
        Button btnLogin = findViewById(R.id.btn_login);

        sharedPreferences = getSharedPreferences("loginState", Context.MODE_PRIVATE);

        if (sharedPreferences.getBoolean("isLogin", false)) {
            etUsername.setText(sharedPreferences.getString("username", ""));
            etPassword.setText(sharedPreferences.getString("password", ""));
            checkBox.setChecked(true);
        }

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = etUsername.getText().toString().trim();
                String password = etPassword.getText().toString().trim();
                if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
                    Toast.makeText(LoginActivity.this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
                } else {
                    if (username.equals("admin") && password.equals("123456")) {
                        if (checkBox.isChecked()) {
                            SharedPreferences.Editor editor = sharedPreferences.edit();
                            editor.putString("username", username);
                            editor.putString("password", password);
                            editor.putBoolean("isLogin", true);
                            editor.apply();
                        }
                        Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }
}

在这个例子中,我们通过getSharedPreferences()方法获取了一个SharedPreferences对象,以文件名为"loginState",然后通过SharedPreferences对象来保存和读取登录状态,以实现自动登录的功能。

以上就是使用SharedPreferences存储数据的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android学习之使用SharedPreferences存储应用程序数据 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • win10开始菜单点击右键没反应如何解决 图解win10开始菜单右键点击没反应

    如果在使用Win10开始菜单时发现右键无法使用,不能打开右键菜单,那么下面的攻略可能会对你有所帮助。 1. 检查鼠标设置是否正确 在一些情况下,右键无法使用可能是由于鼠标设置问题导致的。解决此类问题的方法如下: 点击开始菜单并输入“鼠标设置”,然后点击“鼠标设置”应用程序。 确保你在“鼠标”选项卡下。在此处可以看到选项卡中的有关鼠标的设置。 确认“右键”按钮…

    other 2023年6月27日
    00
  • 什么是oss/bss(电信业务)

    什么是OSS/BSS(电信业务) 介绍 OSS和BSS的区别 OSS的功能 BSS的功能 介绍 OSS(Operations Support Systems)和BSS(Business Support Systems)是电信业务中两个关键的子系统,分别负责运营和业务支持。 OSS系统主要处理运营过程中的实际操作,例如设置和安装网络设备、维护网络设备和服务、故…

    其他 2023年3月28日
    00
  • js延迟加载的6种方式实例总结

    首先我们需要了解什么是js延迟加载。js延迟加载是指在网页中,等到网页加载完成后再加载js文件,以此提高网页加载速度和用户体验。 接下来,我们详细讲解一下js延迟加载的6种方式: defer属性 defer属性是script标签的一个属性,它告诉浏览器下载js文件的时候不会阻塞页面渲染过程,而是会等到页面渲染完成后再执行js文件。示例如下: <scri…

    other 2023年6月25日
    00
  • Android编程之点击按钮的响应方式小结【3种方式】

    Android编程之点击按钮的响应方式小结【3种方式】 在Android编程中,我们经常需要为按钮添加点击事件的响应。下面将介绍三种常用的方式来实现按钮的点击响应。 1. 使用匿名内部类 这是最常见的一种方式,通过创建一个匿名内部类来实现按钮的点击事件。 Button button = findViewById(R.id.button); button.se…

    other 2023年9月6日
    00
  • safari下载文件自动加了html后缀问题

    Safari下载文件自动加了html后缀问题攻略 有时候在使用Safari浏览器下载文件时,会遇到一个问题,即下载的文件会自动添加一个.html的后缀名。这可能导致文件无法正确打开或者无法按照预期的方式使用。下面是解决这个问题的完整攻略。 步骤一:检查文件链接 首先,确保你正在下载的文件链接是正确的。有时候,文件链接本身可能已经包含了.html的后缀名,这会…

    other 2023年8月5日
    00
  • presto的动态化应用(一):presto节点的横向扩展与伸缩

    Presto的动态化应用(一):Presto节点的横向扩展与伸缩 引言 在现今的大数据时代,数据分析和数据挖掘已经成为了重要的应用场景。为了应对高并发的数据查询需求,Presto作为一种高效的分布式SQL查询引擎,逐渐流行起来。然而,在实际应用中,Presto节点的横向扩展与伸缩是一个经常需要应对的问题。因此,本文将围绕这个话题展开相关讨论和解决方案。 节点…

    其他 2023年3月28日
    00
  • 激活工具 – Microsoft Toolkit 2.4.7

    激活工具 – Microsoft Toolkit 2.4.7 Microsoft Toolkit 2.4.7是一款非常实用的激活工具,可以帮助用户激活Windows操作系统以及Office办公软件。 工具的功能 Microsoft Toolkit 2.4.7可以帮助用户激活以下产品: Windows Vista/7/8/8.1/10 Windows Serv…

    其他 2023年3月28日
    00
  • C语言实现数据结构和双向链表操作

    下面是详细讲解 “C语言实现数据结构和双向链表操作” 的完整攻略。 什么是数据结构? 数据结构是计算机中存储、组织和管理数据的方式。数据结构可以分为线性结构和非线性结构两种。其中,线性结构包括数组、链表、栈、队列等,非线性结构包括树、图等。 什么是链表? 链表是一种动态的数据结构,它由许多个结点组成。每个结点包含两个部分:数据域和指针域。数据域存储数据,指针…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部