Android实现登录注册功能
作者:大螃蟹蟹蟹 发布时间:2023-07-31 09:35:44
标签:Android,登录,注册
本文实例为大家分享了Android实现登录注册功能的具体代码,供大家参考,具体内容如下
运行环境 Android Studio
总体效果图
一、 设计注册页面的布局
二、完成注册功能
(1) 添加User类
(2)添加 UserManager类 管理用户信息
package com.example.videoplayer;
import android.hardware.usb.UsbRequest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 大头 on 2020/5/28.
*/
public class UserManager
{
//创建一个List来缓存User信息
List<User> userList = new ArrayList<>();
//数据保存到这个文件
File file;
public UserManager(File file)
{
this.file = file;
}
//保存文件
public void save() throws Exception
{
//每行存储一个用户的信息
FileOutputStream fileOutputStream = new FileOutputStream(file);
for (User u : userList)
{
String line = u.username + "," + u.password + "\n";
fileOutputStream.write(line.getBytes("UTF-8"));
}
fileOutputStream.close();
}
//从文件加载
public void load() throws Exception
{
InputStreamReader in = new InputStreamReader(new FileInputStream(file));
BufferedReader reader = new BufferedReader(in);
userList.clear();//清空链表
while (true)
{
String line = reader.readLine();
if (line == null)
break;
String[] cols = line.split(",");
if (cols.length<2) continue;
User user = new User();
user.username = cols[0].trim();
user.password = cols[1].trim();
userList.add( user );
}
reader.close();
}
//注册一个新用户
public void add(User u)
{
userList.add(u);
}
// 按名称查找
public User find(String username)
{
for (User u : userList)
{
if(u.username.equals(username))
{
return u;
}
}
return null;
}
}
(3)在RegisterActivity里面调用UserManager 实现注册
package com.example.videoplayer;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
public class RegisterActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
}
public void doRegister(View view)
{
//获取用户输入
String username = ((EditText)findViewById(R.id.id_username)).getText().toString();
String password = ((EditText)findViewById(R.id.id_password)).getText().toString();
String password2 = ((EditText)findViewById(R.id.id_password2)).getText().toString();
if(!password.equals(password2))
{
Toast.makeText(this,"两次密码不一致",Toast.LENGTH_SHORT).show();
return;
}
//保存用户信息
File file = new File(getExternalFilesDir(""),"users.txt");
UserManager userManager = new UserManager(file);
try {
userManager.load();//从users.txt 中读取数据
}catch (Exception e){
}
//检查用户是否存在
if(userManager.find(username) != null)
{
Toast.makeText(this, "用户名已经存在!", Toast.LENGTH_SHORT).show();
}
else
{
//添加用户 保存文件
userManager.add(new User(username,password));
try {
userManager.save();
}catch (Exception e){
e.printStackTrace();
}
Toast.makeText(this, "注册成功!", Toast.LENGTH_SHORT).show();
}
}
}
三、添加登录页面
(1)添加布局
(2)点击注册跳转到登录页面
(3)点击登录能跳转到主页面
最后应调用finish()关闭本界面,即从返回栈里销毁本界面。原因是,当用户进入主界面后,点返回时应返回到Home主屏,而不应该返回到登录界面。
(可扩展:保存登录信息 自动登录)
package com.example.videoplayer;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
public class UserLoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_login);
}
//点击 '登录' 按钮
public void doLogin(View view)
{
// 取得用户界面输入
String username = ((EditText)findViewById(R.id.id_username)).getText().toString();
String password = ((EditText)findViewById(R.id.id_password)).getText().toString();
//从文件里加载所有用户的数据
File file = new File(getExternalFilesDir(""),"users.txt");
UserManager userManager = new UserManager(file);
try {
userManager.load();
}catch (Exception e){}
//从用户列表里查找用户
User user = userManager.find(username);
if (user == null)
{
Toast.makeText(this, "无此用户!", Toast.LENGTH_SHORT).show();
return;
}
//比较密码是否匹配
if (!user.password.equals(password))
{
Toast.makeText(this, "密码错误!", Toast.LENGTH_SHORT).show();
return;
}
//登录成功 把用户信息放在全局对象里
//进入主界面
Intent intent = new Intent(UserLoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
// 点击 '注册' 按钮
public void doRegister(View view)
{
Intent intent = new Intent(UserLoginActivity.this, RegisterActivity.class);
startActivity(intent);
}
}
来源:https://blog.csdn.net/tttttt521/article/details/106412240


猜你喜欢
- 我就废话不多说了,大家还是直接看代码吧~package com.cloudtech.web.util; import java.io.Buf
- java8的stream取max public static void main(String[] args) { &
- 本文实例为大家分享了Unity实现俄罗斯方块的具体代码,供大家参考,具体内容如下一、使用SpriteRenderer作为小方块图片,创建7种
- 先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE
- 1、修改application.properties新建 Mapper、实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下# te
- 一、项目背景在实际工作中,会遇到业务比较集中的情况,随着时间推延,这部分业务关联的mysql表就会越来越大,十分臃肿。尽管在项目架构上做了读
- 前言定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类在简单工厂模式中用于被创建实例的方法通常为静态(s
- Spring容器可以在不使用<constructor-arg>和<property>元素的情况下自动装配相互协作的b
- 本文实例为大家分享了android计算器实现加减乘除的具体代码,供大家参考,具体内容如 * :以下计算器只注重实现功能,不考虑其他BUG,只有
- VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch even。Velocit
- 为大家提供的MySQL忘记密码的解决方案,供大家参考,具体内容如下1.在操作系统windows操作系统,xp或win7.中进入如下目录:C:
- C++/java 继承类的多态详解学过C++和Java的人都知道,他们二者由于都可以进行面向对象编程,而面向对象编程的三大特性就是封装、继承
- 一. Dispatchers.IO1.Dispatchers.IO在协程中,当需要执行IO任务时,会在上下文中指定Dispatchers.I
- 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。J
- 序列化序列化:将对象转换为二进制序列在网络中传输或保存到磁盘反序列化:从网络或磁盘中将二进制序列转换为对象注意:对象必须实现Serializ
- 零碎记事距离上次发博客已经有一年半了,转眼间我也是从做图像研究到了做游戏开发,说起来看看前面的博文,本来就有前兆的东西呢(笑)......因
- 前言表单提交是最常见的数据提交方式,我们经常会填写表单信息,比如用户名,身份证,手机号等等,因此就会产生身份证是否合法,用户名是否为空,虽然
- 本文实例汇总了Java文件操作。分享给大家供大家参考,具体如下:1.创建文件夹//import java.io.*; File myFold
- 看完本文你将了解:ACTION_CANCEL的触发时机滑出子View区域会发生什么?为什么不响应onClick()事件首先看一下官方的解释:
- 今天看到一个ios写的图灵机器人,直接去官网(http://www.tuling123.com/openapi/)看了下API接入,太简单了