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
0
投稿
猜你喜欢
- 先看下效果:两种需求场景:1.广告页3s后跳转到首页2.短信验证码60s倒计时第一种的话,根据需求我们可以知道,我们想要的效果就是3s结束做
- 在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 co
- 首先给出一段代码:public class AslistMethod { public static void main(String[]
- “Java is still not dead—and people are starting to figure that out.”本教
- 本文实例讲述了Java Web项目部署在Tomcat运行出错与解决方法。分享给大家供大家参考,具体如下:1、在部署Java Web项目的过程
- 一:问题描述 在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些a
- 今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查、分页、排序、事务操作等功能。下面先来介绍一下JPA中一些常用的
- 在 fluro 中,定义路由处理器 Handler 时可以指定该页面的默认转场形式,或者在使用 navigateTo 方法是可以设置页面跳转
- 免责声明:本教程所有资源均来源于网络;仅用于学习交流,请勿用于任何商业行为;如需要,请使用正版授权;侵权联删。推荐最新 IntelliJ I
- 引言我已经一个多星期没碰过电脑了,今日上班,打开电脑的第一件事就是想着写点什么。反正大家都还沉浸在节后的喜悦中,还没进入工作状态,与其浪费时
- 1、前言最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring
- 前言之前我们提到了 CustomPaint er 的 Paint 可以使用渐变(GradientShader)来填充绘制的图形,本篇我们来介
- 前言本篇文章 中写到的是 flutter 调用了Android 原生的 TextView 案例添加原生组件的流程基本上可以描述为:1 and
- 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较
- 实验目的在C#和Rest/Restful以及其它的Web服务交互过程中,大量使用到JSON传递数据,如何快捷的转化C#对象到JSON和转化J
- Android 无障碍的全局悬浮窗可以在屏幕上添加 UI 供用户进行快捷操作,可以展示在所有应用程序之上长期展示。另一方面,在一些自动化场景
- 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,
- 1. matlab的lp2lp函数的作用去归一化 H(s) 的分母2. matlab的lp2lp函数的使用方法[z, p, k]=butta
- 1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)&nb
- 简要:EigenFace是基于PCA降维的人脸识别算法,PCA是使整体数据降维后的方差最大,没有考虑降维后类间的变化。 它是将图像