安卓利用SharedPreference对象存储和读取用户信息(Kotlin语言)


一、实现要点

(1)在使用记住密码模式下,通过SharedPreference对象存储用户输入的用户名及密码。
(2)当从Mainactivity退出到登录界面时,读取SharedPreference对象中存储数据,将用户名和密码自动写到登录Activity。
(3)当用户输入错误密码或者账号时,弹出提示窗,选择取消则返回,选择重新输入则清空输入框内容

二、实现效果图

在这里插入图片描述

三、实现步骤

1、创建新项目,在Mainactivity布局添加按钮,并设置跳转登录界面的点击事件

Mainactivity布局代码如下:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#5500DD"
        android:textColor="@color/white"
        android:text="退出"
        android:width="200dp"
        android:height="50dp"
        android:textSize="25dp"
       android:layout_marginLeft="100dp"
        android:id="@+id/return_login"
        />
</LinearLayout>

Mainactivity.kt代码如下:

package com.example.test03

import android.app.AlertDialog
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        return_login.setOnClickListener {
            val intent = Intent(this, log_on::class.java)
            this.startActivity(intent)
        }
    }


}

2、创建一个登录Activity,设置输入用户信息的控件,一个记住密码的CheckBox和按钮

登录界面布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="20dp"
        >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="10dp"
            android:text="登录"
            android:textColor="@color/white"
            android:textSize="30dp" />


        <ImageView
            android:id="@+id/lg_userIcon"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_marginBottom="20dp"
            android:layout_marginTop="20dp"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:src="@drawable/touxiang"/>

        <EditText
            android:id="@+id/lg_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/lg_userIcon"
            android:layout_marginTop="30dp"
            android:drawableLeft="@drawable/account"
            android:drawablePadding="5dp"
            android:hint="请输入账号"
            android:maxLines="1"
            android:textColor="#FFFF"
            android:textColorHint="#FFFF" />

        <EditText
            android:id="@+id/lg_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/lg_username"
            android:layout_marginTop="10dp"
            android:drawableLeft="@drawable/password"
            android:drawablePadding="5dp"
            android:hint="请输入密码"
            android:maxLines="1"
            android:inputType="textPassword"
            android:textColor="#FFFF"
            android:textColorHint="#FFF"/>

        <LinearLayout
            android:id="@+id/ly"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/lg_password">

            <CheckBox
                android:id="@+id/lg_rememberPsd"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="记住密码"
                android:textColor="#1E90FF"/>

        </LinearLayout>

        <Button
            android:id="@+id/lg_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/ly"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="30dp"
            android:text="点击登录"
            android:textSize="18sp"
            android:textColor="#FFFFFF"
            android:background="#009FCC"/>


    </LinearLayout>
</LinearLayout>

3、编写登录kotlin代码,实现个人信息存与取

package com.example.test03


import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import kotlinx.android.synthetic.main.activity_log_on.*


class log_on : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_log_on)
        var rem=getPreferences(Context.MODE_PRIVATE)
        val isrember=rem.getBoolean("lg_rememberPsd",false)
        if(isrember){
            //将密码和账号都设到文本框里
            val account=rem.getString("username","")
            val password=rem.getString("psd","")
            lg_username.setText(account)
            lg_password.setText(password)
            lg_rememberPsd.isChecked = true
        }
        lg_login.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                var username = lg_username.getText().toString()//账号
                var psd = lg_password.getText().toString()//密码
                if(username=="123"&&psd=="123"){
                    val editor=rem.edit()
                    if(lg_rememberPsd.isChecked){
                        //把account和password对应的值都存入SharedPreferences文件中并提交
                        editor.putBoolean("lg_rememberPsd",true)
                        editor.putString("username",username)
                        editor.putString("psd",psd)

                    }else{
                        //将SharedPreferences文件中的数据全部清除掉
                        editor.clear()
                    }
                    editor.apply()
                    val intent = Intent(applicationContext, MainActivity::class.java)
                    startActivity(intent)
                    finish()
                }else{
                    val dialog = AlertDialog.Builder(this@log_on)
                    dialog.setTitle("提示")
                    dialog.setIcon(R.drawable.exit)
                    dialog.setMessage("账号或密码错误")
                    dialog.setCancelable(false)
                    //重新输入,清空输入框内容
                    dialog.setPositiveButton(
                        "重新输入"
                    ) { dialog, which ->
                        lg_username.setText("")
                        lg_password.setText("")
                    }
                    dialog.setNegativeButton("取消", null)
                    dialog.show()
                }

            }
        })

    }
}

四、 总结

首先使用getPreferences()方法得到SharedPreferences对象之后,然后向SharedPreferences文件中存储数据。主要分为3个步骤:
(1) 调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象。
(2) 向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用
putBoolean()方法,添加一个字符串则使用putString()方法,以此类推。
(3) 调用apply()方法将添加的数据提交,从而完成数据存储操作。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中的SharedPreferencesAndroid开发中一种用于存储小量数据的方式。它提供了一种简单的键值对存储机制,用于存储应用程序的用户配置信息或其他简单数据。 SharedPreferences存储的数据是以XML文件形式保存在设备上。每个SharedPreferences文件都有一个唯一的名称,通过该名称可以访问对应的SharedPreferences对象。可以使用SharedPreferences对象的putXXX()方法存储不同类型的数据,如字符串、整数、布尔值等。 值得注意的是,SharedPreferences中的数据是以键值对的形式存储的。我们可以通过特定的键来获取相应的值,也可以通过键来删除或修改对应的值。SharedPreferences存储的数据是私有的,只能被相同应用程序的组件访问,其他应用程序无法读取或修改。 为了使用SharedPreferences,首先需要获取SharedPreferences对象。可以通过Context的getSharedPreferences()方法或PreferenceManager的getDefaultSharedPreferences()方法来获取SharedPreferences对象。然后可以通过SharedPreferences对象进行数据的存储读取、删除等操作。 SharedPreferences的使用非常简便,适用于存储一些简单的配置信息或用户偏好设置。例如,可以使用SharedPreferences存储用户的登录状态、音量设置、主题颜色等。它还可以用于存储应用程序的运行状态,以便下次启动应用程序时可以恢复之前的状态。 总的来说,SharedPreferencesAndroid开发中非常方便的一种数据存储方式,适用于存储小量数据。它的使用简单且效率较高,对于一些简单的应用场景非常实用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值