首页 > 解决方案 > DialogFragment SignIn with Firebase edittext must not be null 错误

问题描述

我创建了一个带有 2 个编辑文本和 1 个图像的 xml,并在 DialogFragment 中进行了膨胀。比我创建了 3 个按钮。但只有我的 positiveButton 不起作用。

class SignInDialogFragment: DialogFragment() {
private lateinit var auth: FirebaseAuth
private val tag1:String="className"
private lateinit var intent:Intent
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    Log.d(tag,"Tıklandı. 1")
    intent=Intent(activity,SignUpActivity::class.java)
    auth = Firebase.auth
    return activity?.let {
        val builder= AlertDialog.Builder(requireContext(),R.style.MyThemeOverlay_MaterialComponents_MaterialAlertDialog)
        val inflater=requireActivity().layoutInflater
        builder.setView(inflater.inflate(R.layout.sign_in,null))

           .setPositiveButton(R.string.signIn) { dialog, id ->
               Log.d(tag1, "edittext2= ${eposta.text}")
               auth.signInWithEmailAndPassword(
                   eposta.text.toString(),
                   sifreGir.text.toString()
               )
                   .addOnCompleteListener { task ->
                       if (task.isSuccessful) {
                           Log.d(tag1, "signInWithEmail:success")
                           val user = auth.currentUser
                           updateUI(user)
                       } else {
                           Toast.makeText(
                               requireContext(), "Authentication failed.",
                               Toast.LENGTH_SHORT
                           ).show()
                           updateUI(null)
                       }
                   }
               //Giriş eylemleri
           }
            .setNeutralButton(R.string.sign_up) { dialog, which ->
                startActivity(intent)
                //Kayıt ol sayfaseına göndersin
                dialog.dismiss()
                Log.d(tag1,"Kayıt ol' a geçti")
            }
            .setNegativeButton(R.string.cancel) { dialog, id ->
                //İptal et
                dialog.cancel()
                Log.d(tag1,"Dialog dismissed!")
            }
        builder.create()
    }?:throw IllegalStateException("Aktivite boş olamaz.")

}

这是我的 Logcat 错误:

java.lang.NullPointerException:在 com.android.internal.app.AlertController$ButtonHandler 的 com.ebookfrenzy.beaotis.SignInDialogFragment$onCreateDialog$$inlined$let$lambda$1.onClick(SignInDialogFragment.kt:31) 处的 eposta 不得为空.handleMessage(AlertController.java:160) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread. java:5221) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run( ZygoteInit.java:899) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

我在这里找到了这个。我明白了,但我不能像那样使用它,它给了我未解决的参考错误。我应该怎么办?

标签: androidfirebasekotlin

解决方案


只需在您的代码中添加以下行

val view = inflater.inflate(R.layout.sign_in,null)
builder.setView(view)

代替

eposta

有了这个

view.eposta

推荐阅读