Я пытаюсь создать приложение для Android (Минимальный уровень API 23, Android Studio 3.3.2, Использование AndroidX артефактов), где пользователь может зарегистрироваться и войти в систему;Все данные должны храниться в Cloud Firestore.
Мои требования к проверке ввода для каждого поля следующие:
Имя: не может быть пустым, не может содержит пробелы и содержит только алфавиты + автоматическое использование заглавных букв для каждого символа
Middlename: можно оставить пустым, может содержать пробелы и содержать только алфавиты + автоматическое использование заглавных буквкаждый символ
Фамилия: не может быть пустой, не может содержать пробелы и содержит только буквы алфавита + автоматическое использование заглавных букв для каждого символа
Отдел: не может быть пустым, может содержать пробелы, алфавиты и специальные символы + автоматическое использование заглавных букв для каждого символа
Программа: не может быть пустым, может содержит пробелы, алфавиты и специальные символы + автоматическое использование заглавных букв для каждого символа
Семестр: не может быть пустым иd может содержать только чисел в диапазоне от 0 до 9, но значение не может быть меньше 1
Rollnumber: не может быть пустым, не может содержатьпробелы и буквенно-цифровой + автоматическая прописная буква каждого символа
Электронная почта: не может быть пустой + должен соответствовать стандартному шаблону электронной почты
Пароль: не может быть пустым, минимум 7 символов с 1 заглавными буквами, 1 строчными буквами, 1 цифрой, 1 специальным символом в качестве минимума
Passconfirm: должно совпадать с паролем"поле выше
Все поля ввода выше будут сохранены в виде строки, кроме семестра, который будет целым числом
Ниже приведен мой код дляпроцесс регистрации, это рабочий код, поскольку данные успешно добавляются в базу данных, однако мне еще не удалось найти способ проверить мои данные.
Код из класса регистрации:
package com.university.smartattendance;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener
{
EditText TextFname;
EditText TextMname;
EditText TextLname;
EditText TextDept;
EditText TextProg;
EditText TextSemester;
EditText TextRolln;
EditText TextEmail;
EditText TextPassword;
EditText TextPasswordConfirm;
FirebaseFirestore db = FirebaseFirestore.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
TextFname= findViewById(R.id.Fname);
TextMname= findViewById(R.id.Mname);
TextLname= findViewById(R.id.Lname);
TextDept= findViewById(R.id.Dept);
TextProg= findViewById(R.id.Prog);
TextSemester= findViewById(R.id.Semester);
TextRolln= findViewById(R.id.Rolln);
TextEmail= findViewById(R.id.Email);
TextPassword= findViewById(R.id.Password);
TextPasswordConfirm= findViewById(R.id.PasswordConfirm);
findViewById(R.id.submitbutton).setOnClickListener(this);
}
@Override
public void onClick (View V)
{
String Firstname=TextFname.getText().toString().trim();
String Middlename=TextMname.getText().toString();//Removed trimming
String Lastname=TextLname.getText().toString().trim();
String Department=TextDept.getText().toString().trim();
String Programme=TextProg.getText().toString().trim();
String Semester=TextSemester.getText().toString().trim();
String Rollnumber=TextRolln.getText().toString().trim();
String Email=TextEmail.getText().toString().trim();
String Password=TextPassword.getText().toString().trim();
String Passconfirm=TextPasswordConfirm.getText().toString().trim();
CollectionReference dbUsers = db.collection("Students");
Student student = new Student
(
Firstname,
Middlename,
Lastname,
Department,
Programme,
Integer.parseInt(Semester),
Rollnumber,
Email,
Password,
Passconfirm
);
dbUsers.add(student)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>()
{
@Override
public void onSuccess(DocumentReference documentReference)
{
Toast.makeText(RegisterActivity.this,"Successfully Registered", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
Код из класса ученика:
package com.university.smartattendance;
public class Student
{
private String Firstname,Middlename,Lastname,Department,Programme;
private int Semester;
private String Rollnumber,Email,Password,Passconfirm;
public Student()
{
}
public Student(String firstname, String middlename, String lastname, String department, String programme, int semester, String rollnumber, String email, String password, String passconfirm)
{
Firstname = firstname;
Middlename = middlename;
Lastname = lastname;
Department = department;
Programme = programme;
Semester = semester;
Rollnumber = rollnumber;
Email = email;
Password = password;
Passconfirm = passconfirm;
}
public String getFirstname()
{
return Firstname;
}
public String getMiddlename()
{
return Middlename;
}
public String getLastname()
{
return Lastname;
}
public String getDepartment()
{
return Department;
}
public String getProgramme()
{
return Programme;
}
public int getSemester()
{
return Semester;
}
public String getRollnumber()
{
return Rollnumber;
}
public String getEmail()
{
return Email;
}
public String getPassword()
{
return Password;
}
public String getPassconfirm()
{
return Passconfirm;
}
}
Моя учетная записьФайл ttivity_regiser.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:id="@+id/registerform"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarStyle="insideInset"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="44dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/Fname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="97dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="97dp"
android:autofillHints=""
android:ems="10"
android:hint="First Name"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/Mname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Middle Name"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Fname" />
<EditText
android:id="@+id/Lname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Last Name"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Mname" />
<EditText
android:id="@+id/Rolln"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Roll Number"
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Lname" />
<EditText
android:id="@+id/Dept"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Department"
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Rolln" />
<EditText
android:id="@+id/Prog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Programme"
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Dept" />
<EditText
android:id="@+id/Semester"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Semester"
android:inputType="number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Prog" />
<EditText
android:id="@+id/Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:autofillHints=""
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Semester" />
<EditText
android:id="@+id/Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="99dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="99dp"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Email"
android:autofillHints="" />
<EditText
android:id="@+id/PasswordConfirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="97dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="97dp"
android:autofillHints=""
android:ems="10"
android:hint="Re-enter Password"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Password" />
<Button
android:id="@+id/submitbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="159dp"
android:layout_marginTop="22dp"
android:layout_marginEnd="160dp"
android:text="Submit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/PasswordConfirm" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>