Khi xây dựng một ứng dụng Android cho đồ án, phần form đăng ký và đăng nhập là một tính năng cơ bản nhưng rất quan trọng, thường xuất hiện trong các app như quản lý sinh viên, bán hàng, ghi chú cá nhân hay thậm chí cả mạng xã hội mini. Một giao diện đăng nhập đẹp, dễ sử dụng, kết hợp xử lý dữ liệu hiệu quả sẽ giúp đồ án của bạn trở nên hoàn chỉnh và chuyên nghiệp hơn rất nhiều.
Bài viết này sẽ hướng dẫn bạn từng bước từ thiết kế giao diện đến xử lý logic trong Android Studio, bằng Java hoặc Kotlin, và gợi ý cách lưu dữ liệu người dùng bằng SQLite hoặc Firebase – tùy mức độ yêu cầu của đồ án.
Thiết kế giao diện form đăng ký và đăng nhập
Giao diện đơn giản nhưng hiệu quả của một form thường bao gồm:
-
2 hoặc 3 ô nhập liệu (
EditText): email, mật khẩu (và xác nhận mật khẩu nếu là form đăng ký) -
1 nút bấm (
Button) để thực hiện đăng nhập/đăng ký -
1 dòng chuyển hướng đến màn hình còn lại (ví dụ: “Bạn chưa có tài khoản? Đăng ký”)
Bạn có thể thiết kế trong file XML như sau (ví dụ form đăng nhập):
<EditText
android:id="@+id/edtEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/edtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Mật khẩu"
android:inputType="textPassword" />
<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Đăng nhập" />
Bạn nên đặt toàn bộ trong một LinearLayout hoặc ConstraintLayout để dễ căn chỉnh. Đừng quên sử dụng TextInputLayout (Material Design) để giao diện đẹp hơn.
Xử lý logic đăng nhập và đăng ký
Sau khi người dùng nhập thông tin và nhấn nút, bạn cần kiểm tra:
-
Các trường đã được điền đầy đủ chưa
-
Định dạng email có hợp lệ không
-
Mật khẩu có đủ độ dài không
-
(Trong form đăng ký) mật khẩu và xác nhận mật khẩu có trùng khớp không
Ví dụ (Java):
btnLogin.setOnClickListener(view -> {
String email = edtEmail.getText().toString().trim();
String password = edtPassword.getText().toString().trim();
if (email.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "Vui lòng điền đầy đủ thông tin", Toast.LENGTH_SHORT).show();
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
Toast.makeText(this, "Email không hợp lệ", Toast.LENGTH_SHORT).show();
return;
}
// Xử lý đăng nhập tại đây
});
Lưu và kiểm tra tài khoản người dùng
Bạn có thể chọn giữa hai phương pháp chính:
1. Sử dụng SQLite (local, không cần internet)
Với đồ án đơn giản, lưu thông tin người dùng vào SQLite là đủ. Bạn sẽ:
-
Tạo một bảng
usersvới các cột: id, email, password -
Kiểm tra email + password khi đăng nhập
-
Thêm bản ghi mới khi đăng ký
Ví dụ tạo bảng (SQLiteOpenHelper):
db.execSQL("CREATE TABLE users(id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT, password TEXT)");
Sau đó dùng INSERT để thêm dữ liệu, SELECT để xác minh đăng nhập.
Ưu điểm: nhanh, không phụ thuộc mạng, dễ triển khai
Nhược điểm: không thể đồng bộ nhiều thiết bị, không phù hợp nếu cần đăng nhập trên nhiều máy
2. Sử dụng Firebase Authentication (dễ triển khai, đồng bộ được)
Nếu bạn muốn đăng nhập online, dễ đồng bộ và chuyên nghiệp hơn, hãy dùng Firebase Auth.
-
Cài các thư viện
firebase-authvàfirebase-core -
Khởi tạo Firebase trong
MainActivity -
Đăng ký:
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
// Thành công
} else {
// Lỗi
}
});
-
Đăng nhập:

