irpas技术客

安卓通过SQLite实现登录注册功能(小白式教程)_KIZAI_安卓sqlite登录注册

网络 3877

安卓通过SQLlite实现登录注册功能 前面基本操作看图片

第一个xml文件是:round_bg.xml,后面界面布局要用到 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/colorPrimary"/> <corners android:radius="100dp"/> </shape>

第二个xml文件是:round_border.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:color="@color/colorPrimary" android:width="1dp"/> <corners android:radius="100dp"/> </shape> 修改下系统颜色

改为:

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#0099ff</color> <color name="colorPrimaryDark">#0099ff</color> <color name="colorAccent">#03DAC5</color> </resources>

现在开始添加图标:

其他的图标如下图,命名方法看个人习惯

可以参考我的命名方法,不要改太多就行。

开始登录界面的布局:打开activity_login.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LoginActivity"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.35" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.45" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.55" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.65" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.75" /> <TextView android:id="@+id/tv_loginview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/logint" android:textSize="45sp" android:textColor="@color/colorPrimary" app:layout_constraintBottom_toTopOf="@+id/guideline2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.129" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.494" /> <EditText android:id="@+id/et_User" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="user" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_user" android:drawablePadding="16dp" android:ems="10" android:hint="@string/etUser_hint" android:inputType="textEmailAddress" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:ignore="LabelFor" app:layout_constraintTop_toTopOf="@+id/guideline2" /> <EditText android:id="@+id/et_Psw" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_lock" android:drawablePadding="16dp" android:ems="10" android:hint="@string/pswHint" android:inputType="textPassword" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline4" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.508" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline3" app:layout_constraintVertical_bias="0.47" /> <CheckBox android:id="@+id/cb_rmbPsw" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:drawingCacheQuality="auto" android:shadowColor="@color/colorPrimaryDark" android:text="@string/rempsw" android:textColor="@color/colorPrimary" android:textColorHighlight="@color/colorPrimary" android:textColorLink="@color/colorPrimary" android:textSize="18sp" app:layout_constraintBottom_toTopOf="@+id/guideline5" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline4" /> <Button android:id="@+id/btn_Login" android:layout_width="350dp" android:layout_height="wrap_content" android:background="@drawable/round_bg" android:text="@string/logintxt" android:textColor="#FDFAFA" android:textSize="18sp" app:layout_constraintBottom_toTopOf="@+id/guideline6" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline5" app:layout_constraintVertical_bias="0.538" /> <TextView android:id="@+id/tv_Register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/yhzc" android:textColor="@color/colorPrimary" android:textSize="18sp" app:layout_constraintBottom_toTopOf="@+id/guideline5" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/guideline" app:layout_constraintTop_toTopOf="@+id/guideline4" /> </androidx.constraintlayout.widget.ConstraintLayout> 注册界面的布局:打开activity_registered.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".RegisteredActivity"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.15" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.25" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.35" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.45" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.55" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.65" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.75" /> <ImageView android:id="@+id/iv_back" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginTop="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline8" app:layout_constraintEnd_toStartOf="@+id/guideline7" app:layout_constraintHorizontal_bias="0.262" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.477" app:srcCompat="@drawable/ic_back" /> <EditText android:id="@+id/et_rgsName" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_user" android:drawableEnd="@drawable/ic_start" android:drawablePadding="16dp" android:ems="10" android:hint="@string/plsu" android:inputType="textPersonName" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline9" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline8" /> <EditText android:id="@+id/et_rgsEmail" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_email" android:drawablePadding="16dp" android:ems="10" android:hint="@string/plsemail" android:inputType="textPersonName" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline10" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline9" /> <EditText android:id="@+id/et_rgsPhoneNum" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_phone" android:drawableEnd="@drawable/ic_start" android:drawablePadding="16dp" android:ems="10" android:hint="@string/plsohone" android:inputType="textPersonName" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline11" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline10" /> <EditText android:id="@+id/et_rgsPsw1" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_lock" android:drawableEnd="@drawable/ic_start" android:drawablePadding="16dp" android:ems="10" android:hint="@string/plspsw" android:inputType="textPersonName" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline12" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline11" /> <EditText android:id="@+id/et_rgsPsw2" android:layout_width="350dp" android:layout_height="wrap_content" android:autofillHints="" android:background="@drawable/round_border" android:drawableStart="@drawable/ic_lock" android:drawableEnd="@drawable/ic_start" android:drawablePadding="16dp" android:ems="10" android:hint="@string/plspsw" android:inputType="textPersonName" android:padding="16dp" app:layout_constraintBottom_toTopOf="@+id/guideline13" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline12" /> <Button android:id="@+id/btn_rgs" android:layout_width="350dp" android:layout_height="wrap_content" android:background="@drawable/round_bg" android:text="@string/reg" android:textColor="#FFFFFF" android:textSize="18sp" app:layout_constraintBottom_toTopOf="@+id/guideline14" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.491" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline13" app:layout_constraintVertical_bias="0.692" /> </androidx.constraintlayout.widget.ConstraintLayout> 界面布局完成,开始来正事。 新建两个工具类

按确定就能添加:打开DBOpenHelper.class,不懂看注释! package com.kizai.com.login; import android.annotation.SuppressLint; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; public class DBOpenHelper extends SQLiteOpenHelper { /** * 声明一个AndroidSDK自带的数据库变量db */ private SQLiteDatabase db; /** * 写一个这个类的构造函数,参数为上下文context,所谓上下文就是这个类所在包的路径 * 指明上下文,数据库名,工厂默认空值,版本号默认从1开始 * super(context,"db_test",null,1); * 把数据库设置成可写入状态,除非内存已满,那时候会自动设置为只读模式 * 不过,以现如今的内存容量,估计一辈子也见不到几次内存占满的状态 * db = getReadableDatabase(); */ DBOpenHelper(Context context){ super(context,"db_test",null,1); db = getReadableDatabase(); } /** * 重写两个必须要重写的方法,因为class DBOpenHelper extends SQLiteOpenHelper * 而这两个方法是 abstract 类 SQLiteOpenHelper 中声明的 abstract 方法 * 所以必须在子类 DBOpenHelper 中重写 abstract 方法 * 想想也是,为啥规定这么死必须重写? * 因为,一个数据库表,首先是要被创建的,然后免不了是要进行增删改操作的 * 所以就有onCreate()、onUpgrade()两个方法 * */ @Override public void onCreate(SQLiteDatabase db){ db.execSQL("CREATE TABLE IF NOT EXISTS user(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT," + "password TEXT," + "email TEXT," + "phonenum TEXT)" ); } //版本适应 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ db.execSQL("DROP TABLE IF EXISTS user"); onCreate(db); } /** * 接下来写自定义的增删改查方法 * 这些方法,写在这里归写在这里,以后不一定都用 * add() * delete() * update() * getAllData() */ void add(String name, String password,String email,String phonenum){ db.execSQL("INSERT INTO user (name,password,email,phonenum) VALUES(?,?,?,?)",new Object[]{name,password,email,phonenum}); } public void delete(String name,String password){ db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password); } public void updata(String password){ db.execSQL("UPDATE user SET password = ?",new Object[]{password}); } /** * 前三个没啥说的,都是一套的看懂一个其他的都能懂了 * 下面重点说一下查询表user全部内容的方法 * 我们查询出来的内容,需要有个容器存放,以供使用, * 所以定义了一个ArrayList类的list * 有了容器,接下来就该从表中查询数据了, * 这里使用游标Cursor,这就是数据库的功底了, * 在Android中我就不细说了,因为我数据库功底也不是很厚, * 但我知道,如果需要用Cursor的话,第一个参数:"表名",中间5个:null, * 最后是查询出来内容的排序方式:"name DESC" * 游标定义好了,接下来写一个while循环,让游标从表头游到表尾 * 在游的过程中把游出来的数据存放到list容器中 * */ ArrayList<User> getAllData(){ ArrayList<User> list = new ArrayList<User>(); @SuppressLint("Recycle") Cursor cursor = db.query("user",null,null,null,null,null,"name DESC"); while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String email = cursor.getString(cursor.getColumnIndex("email")); String phonenum = cursor.getString(cursor.getColumnIndex("phonenum")); String password = cursor.getString(cursor.getColumnIndex("password")); list.add(new User(name,password,email,phonenum)); } return list; } } 再添加一个用户类:User.class package com.kizai.com.login; /** * Created by kizai 2020/05/19 */ public class User { private String name; //用户名 private String password; //密码 private String email; //邮箱 private String phonenum; //手机号码 User(String name, String password, String email, String phonenum) { this.name = name; this.password = password; this.email = email; this.phonenum = phonenum; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhonenum() { return phonenum; } public void setPhonenum(String phonenum) { this.phonenum = phonenum; } 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; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", phonenum='" + phonenum + '\'' + '}'; } } 打开LoginActivity,里面有注释,希望能看懂 package com.kizai.com.login; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.text.TextUtils; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.Objects; /** * 此类 implements View.OnClickListener 之后, * 就可以把onClick事件写到onCreate()方法之外 * 这样,onCreate()方法中的代码就不会显得很冗余 */ public class LoginActivity extends AppCompatActivity implements View.OnClickListener { private DBOpenHelper mDBOpenHelper; private EditText et_User, et_Psw; private CheckBox cb_rmbPsw; private String userName; private SharedPreferences.Editor editor; /** * 创建 Activity 时先来重写 onCreate() 方法 * 保存实例状态 * super.onCreate(savedInstanceState); * 设置视图内容的配置文件 * setContentView(R.layout.activity_login); * 上面这行代码真正实现了把视图层 View 也就是 layout 的内容放到 Activity 中进行显示 * 初始化视图中的控件对象 initView() * 实例化 DBOpenHelper,待会进行登录验证的时候要用来进行数据查询 * mDBOpenHelper = new DBOpenHelper(this); */ @SuppressLint("CommitPrefEdits") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏 Objects.requireNonNull(getSupportActionBar()).hide();//隐藏标题栏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);//禁止横屏 setContentView(R.layout.activity_login); initView();//初始化界面 mDBOpenHelper = new DBOpenHelper(this); SharedPreferences sp = getSharedPreferences("user_mes", MODE_PRIVATE); editor = sp.edit(); if(sp.getBoolean("flag",false)){ String user_read = sp.getString("user",""); String psw_read = sp.getString("psw",""); et_User.setText(user_read); et_Psw.setText(psw_read); } } private void initView() { //初始化控件 et_User = findViewById(R.id.et_User); et_Psw = findViewById(R.id.et_Psw); cb_rmbPsw = findViewById(R.id.cb_rmbPsw); Button btn_Login = findViewById(R.id.btn_Login); TextView tv_register = findViewById(R.id.tv_Register); //设置点击事件监听器 btn_Login.setOnClickListener(this); tv_register.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv_Register: //注册 Intent intent = new Intent(LoginActivity.this, RegisteredActivity.class);//跳转到注册界面 startActivity(intent); finish(); break; /** * 登录验证: * * 从EditText的对象上获取文本编辑框输入的数据,并把左右两边的空格去掉 * String name = mEtLoginactivityUsername.getText().toString().trim(); * String password = mEtLoginactivityPassword.getText().toString().trim(); * 进行匹配验证,先判断一下用户名密码是否为空, * if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) * 再进而for循环判断是否与数据库中的数据相匹配 * if (name.equals(user.getName()) && password.equals(user.getPassword())) * 一旦匹配,立即将match = true;break; * 否则 一直匹配到结束 match = false; * * 登录成功之后,进行页面跳转: * * Intent intent = new Intent(this, MainActivity.class); * startActivity(intent); * finish();//销毁此Activity */ case R.id.btn_Login: String name = et_User.getText().toString().trim(); String password = et_Psw.getText().toString().trim(); if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) { ArrayList<User> data = mDBOpenHelper.getAllData(); boolean match = false; boolean match2 = false; for (int i = 0; i < data.size(); i++) { User user = data.get(i); if ((name.equals(user.getName()) && password.equals(user.getPassword()))|| (name.equals(user.getEmail())&&password.equals(user.getPassword()))|| (name.equals(user.getPhonenum())&&password.equals(user.getPassword()))) { userName = user.getName(); match = true; if(cb_rmbPsw.isChecked()){ editor.putBoolean("flag",true); editor.putString("user",user.getName()); editor.putString("psw",user.getPassword()); editor.apply(); match2 = true; }else { editor.putString("user",user.getName()); editor.putString("psw",""); // editor.clear(); editor.apply(); match2 = false; } break; } else { match = false; } } if (match) { if(match2){ Toast.makeText(this, "成功记住密码", Toast.LENGTH_SHORT).show(); cb_rmbPsw.setChecked(true); } Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); Runnable target; //用线程启动 Thread thread = new Thread(){ @Override public void run(){ try { sleep(2000);//2秒 模拟登录时间 String user_name = userName; Intent intent1 = new Intent(LoginActivity.this, MainActivity.class);//设置自己跳转到成功的界面 //intent1.putExtra("user_name",user_name); startActivity(intent1); finish(); }catch (Exception e){ e.printStackTrace(); } } }; thread.start();//打开线程 } else { Toast.makeText(this, "用户名或密码不正确,请重新输入", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(this, "请输入你的用户名或密码", Toast.LENGTH_SHORT).show(); } break; } } } 打开RegisteredActivity,里面一样有注释 package com.kizai.com.login; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public class RegisteredActivity extends AppCompatActivity implements View.OnClickListener { private EditText et_rgsName, et_rgsEmail, et_rgsPhoneNum, et_rgsPsw1, et_rgsPsw2; private DBOpenHelper mDBOpenHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);//禁止横屏 setContentView(R.layout.activity_registered); setTitle("用户注册");//顶部标题改成用户注册 initView();//初始化界面 mDBOpenHelper = new DBOpenHelper(this); } private void initView() { et_rgsName = findViewById(R.id.et_rgsName); et_rgsEmail = findViewById(R.id.et_rgsEmail); et_rgsPhoneNum = findViewById(R.id.et_rgsPhoneNum); et_rgsPsw1 = findViewById(R.id.et_rgsPsw1); et_rgsPsw2 = findViewById(R.id.et_rgsPsw2); Button btn_register = findViewById(R.id.btn_rgs); ImageView iv_back = findViewById(R.id.iv_back); /** * 注册页面能点击的就三个地方 * top处返回箭头、刷新验证码图片、注册按钮 */ iv_back.setOnClickListener(this); btn_register.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_back://返回登录界面 Intent intent = new Intent(RegisteredActivity.this, LoginActivity.class); startActivity(intent); finish(); break; case R.id.btn_rgs://注册按钮 //获取用户输入的用户名、密码、验证码 String username = et_rgsName.getText().toString().trim(); String password1 = et_rgsPsw1.getText().toString().trim(); String password2 = et_rgsPsw2.getText().toString().trim(); String email = et_rgsEmail.getText().toString().trim(); String phonenum = et_rgsPhoneNum.getText().toString().trim(); //注册验证 if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password1) && !TextUtils.isEmpty(password2)) { //判断两次密码是否一致 if (password1.equals(password2)) { //将用户名和密码加入到数据库中 mDBOpenHelper.add(username, password2, email, phonenum); Intent intent1 = new Intent(RegisteredActivity.this, LoginActivity.class); startActivity(intent1); finish(); Toast.makeText(this, "验证通过,注册成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "两次密码不一致,注册失败", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(this, "注册信息不完善,注册失败", Toast.LENGTH_SHORT).show(); } break; } } } 做到这里别以为完事了,还要设置打开应用第一个显示的界面

抄到这里应该是运行能直接运行成功的,第一次要注册完才能登录。

祝你好运!!!写文章不易麻烦点个赞呗!!!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #安卓sqlite登录注册