android - 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)
我在这里找到了这个。我明白了,但我不能像那样使用它,它给了我未解决的参考错误。我应该怎么办?
解决方案
只需在您的代码中添加以下行
val view = inflater.inflate(R.layout.sign_in,null)
builder.setView(view)
代替
eposta
有了这个
view.eposta
推荐阅读
- javascript - 错误:无法读取 null 的属性(读取“classList”)
- next.js - 我应该在哪里存储 JSON 文件并在需要时在 Next.JS 中获取数据?
- django - Django Celery,应用程序导入错误仅在生产中
- python - 实现模式匹配——什么时候使用缓存?
- java - 需要帮助或指导来解决问题 快速阅读
- javascript - 我可以在 Angular 中使用护照和会话吗?我可以登录,但 Passport 的“isAuthenticated()”总是返回 false
- django - django-mptt:“where 子句”中的未知列“goods_category.lft”
- c - 在c中制作linux导出函数(不带参数)(在c中排序bash导出输出)
- c# - 在项目中创建 abp 模块化的步骤
- java - 为什么 SyncResolver 的冲突行中没有冲突值?