我對此還是很陌生,所以為我犯的任何小錯誤道歉
我正在嘗試學習如何使用 Firebase 制作帶有電子郵件和密碼的登錄系統,但它似乎沒有按預期作業。檢查電子郵件是否為空、格式錯誤、密碼長度與引數不匹配的代碼也不起作用。我在運行之前仔細檢查了我的代碼,但沒有得到任何結果。
我已經將此應用連接到 Firebase 并添加 Firebase 身份驗證 SDK
單擊登錄按鈕不會按預期出現任何錯誤
登錄頁面.kt
class loginPage : AppCompatActivity() {
lateinit var binding : LoginPageBinding
lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
binding = LoginPageBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.login_page)
auth = FirebaseAuth.getInstance()
login_back_button.setOnClickListener{
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
binding.loginButton.setOnClickListener{
val email = binding.emailField.text.toString()
val password = binding.passwordField.text.toString()
if (email.isEmpty()){
binding.emailField.error = "Email cannot be empty"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
binding.emailField.error = "Email not valid"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (password.length > 6){
binding.passwordField.error = "Minimal password length is 6"
binding.passwordField.requestFocus()
return@setOnClickListener
}
RegisterFirebase(email,password)
}
}
private fun RegisterFirebase(email: String, password: String) {
auth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this){
if (it.isSuccessful){
Toast.makeText(this, "Register Successful", Toast.LENGTH_SHORT).show()
val intent = Intent(this, homePage::class.java)
startActivity(intent)
} else {
Toast.makeText(this, "${it.exception?.message}", Toast.LENGTH_SHORT).show()
}
}
}
}
主頁.kt
class homePage : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.home_page)
}
}
用于輸入電子郵件的 EditText(在 login_page.xml 中)
<EditText
android:id="@ id/email_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_email"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.126"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
用于輸入密碼(在 login_page.xml 中)
<EditText
android:id="@ id/password_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_password"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.208"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
uj5u.com熱心網友回復:
密碼應始終大于或等于 6,在您的情況下,情況正好相反。像這樣修復它:
if (password.length < 6) {
binding.passwordField.error = "Minimal password length is 6"
binding.passwordField.requestFocus()
return@setOnClickListener
}
login_back_button
缺少binding
參考以及如果它是一個后退按鈕,那么您應該只使用finish
回傳到以前的活動而不是再次創建新實體。像這樣:
binding.loginBackButton.setOnClickListener { finish() }
更新:
問題是您正在使用binding
但未將其傳遞給setContentView
. 像這樣修復它:
setContentView(binding.root)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491974.html