赞
踩
(1)在使用记住密码模式下,通过SharedPreference对象存储用户输入的用户名及密码。
(2)当从Mainactivity退出到登录界面时,读取SharedPreference对象中存储数据,将用户名和密码自动写到登录Activity。
(3)当用户输入错误密码或者账号时,弹出提示窗,选择取消则返回,选择重新输入则清空输入框内容
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) } } }
登录界面布局代码如下:
<?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>
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()方法将添加的数据提交,从而完成数据存储操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。