本文实例为大家分享了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;
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);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。