Android应用登录系统实现指南
核心要点:活动页面间的导航转换,以及SQLite数据库辅助类的应用
首先创建一个继承自SQLiteOpenHelper的自定义数据库管理类:
package com.example.myapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
import com.example.myapp.model.UserInfo;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "UserDB.db";
private static final String CREATE_USER_TABLE = "create table user_accounts(username TEXT, userpass TEXT)";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_USER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库版本升级处理
}
public long addUser(UserInfo user) {
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", user.getUsername());
values.put("userpass", user.getUserpass());
long result = db.insert("user_accounts", null, values);
db.close();
return result;
}
public boolean checkUser(String username, String password) {
SQLiteDatabase db = getReadableDatabase();
String[] columns = {"username", "userpass"};
String selection = "username = ?";
String[] selectionArgs = {username};
Cursor cursor = db.query("user_accounts", columns, selection, selectionArgs,
null, null, null);
if (cursor != null && cursor.moveToFirst()) {
String storedPassword = cursor.getString(1);
cursor.close();
db.close();
return storedPassword.equals(password);
}
if (cursor != null) {
cursor.close();
}
db.close();
return false;
}
}
主活动界面实现:获取界面元素并设置点击事件监听,通过switch-case结构处理不同按钮的操作逻辑
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class HomeActivity extends AppCompatActivity implements View.OnClickListener {
private Button signInButton, signUpButton;
private EditText usernameField, passwordField;
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_layout);
dbHelper = new DatabaseHelper(this);
initializeViews();
}
private void initializeViews() {
signInButton = findViewById(R.id.sign_in_btn);
signUpButton = findViewById(R.id.sign_up_btn);
usernameField = findViewById(R.id.username_input);
passwordField = findViewById(R.id.password_input);
signInButton.setOnClickListener(this);
signUpButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sign_in_btn:
String inputUsername = usernameField.getText().toString();
String inputPassword = passwordField.getText().toString();
if (dbHelper.checkUser(inputUsername, inputPassword)) {
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
Intent dashboardIntent = new Intent(this, DashboardActivity.class);
startActivity(dashboardIntent);
} else {
Toast.makeText(this, "登录失败,请检查用户名和密码", Toast.LENGTH_SHORT).show();
}
break;
case R.id.sign_up_btn:
Intent registerIntent = new Intent(this, RegisterActivity.class);
startActivity(registerIntent);
break;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".HomeActivity">
<View
android:layout_width="match_parent"
android:layout_height="120dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="用户名"
android:id="@+id/username_label"
android:textSize="30dp"
android:gravity="center_vertical"/>
<EditText
android:id="@+id/username_input"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:hint="请输入用户名"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="密码"
android:id="@+id/password_label"
android:textSize="30dp"
android:gravity="center_vertical"/>
<EditText
android:id="@+id/password_input"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:hint="请输入密码"
android:inputType="textPassword"/>
</LinearLayout>
<Button
android:layout_width="160dp"
android:layout_height="80dp"
android:text="登录"
android:textSize="30dp"
android:background="@color/colorPrimary"
android:layout_gravity="center"
android:id="@+id/sign_in_btn"/>
<Button
android:layout_width="160dp"
android:layout_height="80dp"
android:text="注册"
android:textSize="30dp"
android:background="@color/colorPrimary"
android:layout_gravity="center"
android:id="@+id/sign_up_btn"/>
</LinearLayout>
用户注册页面实现:
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.myapp.model.UserInfo;
public class RegisterActivity extends AppCompatActivity {
private Button submitRegistration;
private EditText usernameInput, passwordInput;
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register_layout);
dbHelper = new DatabaseHelper(this);
initializeComponents();
}
private void initializeComponents() {
submitRegistration = findViewById(R.id.submit_registration);
usernameInput = findViewById(R.id.reg_username);
passwordInput = findViewById(R.id.reg_password);
}
public void processRegistration(View view) {
String enteredUsername = usernameInput.getText().toString();
String enteredPassword = passwordInput.getText().toString();
if (enteredUsername.isEmpty() || enteredPassword.isEmpty()) {
Toast.makeText(this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
UserInfo newUser = new UserInfo(enteredUsername, enteredPassword);
long result = dbHelper.addUser(newUser);
if (result != -1) {
Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
Intent backToLogin = new Intent(this, HomeActivity.class);
startActivity(backToLogin);
finish();
} else {
Toast.makeText(this, "注册失败,请重试", Toast.LENGTH_SHORT).show();
}
}
}