本篇使用SharedPreference,实现简单的注册登陆界面 同时这也是中国大学慕课移动终端应用开发的网课作业20 1.有关SharedPreference的学习,建议大家阅读此篇博客:Android中SharedPreference的用法 包含两个Activity及对应布局和一个User对象 由于使用的是阿里巴巴的fastjson,所以得先build.gradle文件中添加对fastjson的依赖 注意得实现Serializable接口 如果有什么问题或改进方案,请私信联系我或者在评论区留言
原题目要求:
(1)通过“注册”按钮,跳转到“注册”界面输入用户名和密码。
(2)点击“登录”按钮,匹配已“注册”的用户名和“密码”,用户名和密码正确与否,用Toast进行信息提示。说明
2.由于需要存储复杂类型对象列表,我的解决方案是将List对象转换为json对象再进行的存储。使用的是fastjson。
3.能实现判断用户注册是否重复,允许输入正确口令的用户登陆等简单功能。
4.功能简单,仅作参考代码
1.添加依赖
implementation 'com.alibaba:fastjson:1.2.10'
2.MainActivity.java
public class MainActivity extends AppCompatActivity { private EditText mEditTextName,mEditTextPassword; private Button mButtonRegister,mButtonLogin; private ArrayList<User> mUsers = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); mButtonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = mEditTextName.getText().toString(); String password = mEditTextPassword.getText().toString(); if (!name.equals("")&&!password.equals("")){ User user = new User(name,password); mUsers = read();//获取已经注册的集合 if (!judge(user)){//如果不存在 Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_SHORT).show(); }else { Toast.makeText(MainActivity.this,"登陆成功,欢迎您",Toast.LENGTH_LONG).show(); } }else { Toast.makeText(MainActivity.this,"用户名或密码为空",Toast.LENGTH_SHORT).show(); } } }); mButtonRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(RegisterActivity.createIntent(MainActivity.this)); } }); } private void init(){ mEditTextName = findViewById(R.id.login_edit_name); mEditTextPassword = findViewById(R.id.login_edit_password); mButtonLogin = findViewById(R.id.login_button_login); mButtonRegister = findViewById(R.id.login_button_register); } /** * 判断user的用户名密码是否匹配 * */ private boolean judge(User user){ boolean flag = false; for (User u:mUsers){ //用户名与密码相互匹配 if (user.name.equals(u.name)&&user.password.equals(u.password)){ flag = true; } } return flag; } /** * 读取数据 * */ private ArrayList<User> read(){ //只允许本应用读取 SharedPreferences mSharedPreferences = getSharedPreferences("userLoginInfo",MODE_PRIVATE); String json = mSharedPreferences.getString("data",""); ArrayList<User> users = new ArrayList<>(); if (!json.equals("")){ users = (ArrayList<User>) JSON.parseArray(json,User.class); } return users; } }
3.对应的主布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:layout_width="60dp" android:layout_marginLeft="10dp" android:layout_height="wrap_content" android:textSize="20dp" android:text="账号:"/> <EditText android:id="@+id/login_edit_name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="5"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:layout_width="60dp" android:layout_marginLeft="10dp" android:layout_height="wrap_content" android:textSize="20dp" android:text="密码:" /> <EditText android:id="@+id/login_edit_password" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="5" android:inputType="textPassword"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginTop="20dp"> <Button android:id="@+id/login_button_register" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:text="注册"/> <Button android:id="@+id/login_button_login" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:text="登陆"/> </LinearLayout> </LinearLayout>
4.RegisterActivity.java
public class RegisterActivity extends AppCompatActivity { private EditText mEditTextName,mEditTextPassword; private Button mButtonRegister; private ArrayList<User> mUsers = new ArrayList<>(); //只允许本应用读取 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); init(); mButtonRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = mEditTextName.getText().toString(); String password = mEditTextPassword.getText().toString(); if (!name.equals("")&&!password.equals("")){ User user = new User(name,password); mUsers = read();//获取已经注册的集合 if (!judge(user)){//如果不存在 mUsers.add(user); write(mUsers); Toast.makeText(RegisterActivity.this,"注册成功快去登陆吧",Toast.LENGTH_LONG).show(); }else { Toast.makeText(RegisterActivity.this,"用户名已经存在",Toast.LENGTH_SHORT).show(); } }else { Toast.makeText(RegisterActivity.this,"用户名或密码为空",Toast.LENGTH_SHORT).show(); } } }); } private void init(){ mEditTextName = findViewById(R.id.register_edit_name); mEditTextPassword = findViewById(R.id.register_edit_password); mButtonRegister = findViewById(R.id.register_button_register); } /** * 判断user是否已经在list里了 * */ private boolean judge(User user){ boolean flag = false; for (User u:mUsers){ //用户名重复 if (user.name.equals(u.name)){ flag = true; } } return flag; } /** * 读取数据 * */ private ArrayList<User> read(){ SharedPreferences mSharedPreferences = getSharedPreferences("userLoginInfo",MODE_PRIVATE); String json = mSharedPreferences.getString("data",""); ArrayList<User> users = new ArrayList<>(); if (!json.equals("")){ users = (ArrayList<User>) JSON.parseArray(json,User.class); } return users; } /** * 写入数据 * */ private void write(ArrayList<User> users){ SharedPreferences mSharedPreferences = getSharedPreferences("userLoginInfo",MODE_PRIVATE); SharedPreferences.Editor mEdit = mSharedPreferences.edit(); String json = JSON.toJSONString(users); mEdit.putString("data",json); mEdit.commit(); } //打开自己的方法 public static Intent createIntent(Context context){ return new Intent(context,RegisterActivity.class); } }
5.对应布局文件 activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:layout_width="60dp" android:layout_marginLeft="10dp" android:layout_height="wrap_content" android:textSize="20dp" android:text="账号:"/> <EditText android:id="@+id/register_edit_name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="5"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:layout_width="60dp" android:layout_marginLeft="10dp" android:layout_height="wrap_content" android:textSize="20dp" android:text="密码:" /> <EditText android:id="@+id/register_edit_password" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="5" android:inputType="textPassword"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginTop="20dp" android:orientation="vertical"> <Button android:id="@+id/register_button_register" android:layout_width="100dp" android:layout_height="match_parent" android:layout_gravity="center" android:text="注册"/> </LinearLayout> </LinearLayout>
6.User.java
import java.io.Serializable; public class User implements Serializable { public String name; public String password; public User(String name, String password) { this.name = name; this.password = password; } public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
总结
码字不易,若有帮助,给个关注和赞呗
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算