Android实现登录注册功能
时间:2022-09-20 09:27:12|栏目: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); } }