我正在尝试创建一种在 Activity 启动时通过在抽屉导航中设置 TextView 的文本来更新 UI 的方法。我一直收到 TextView 不能为空的错误?
我得到的错误是非法状态异常 userEmail 不能为空
这是应该更新抽屉导航中的个人资料信息的 updateUI
private fun updateUI(user:FirebaseUser?) {
if (user != null) {
val userEmailText = findViewById<TextView>(R.id.userEmail)
userEmail.text = user.email
val errorTriage : String? = user.email
println("User Email is ="+errorTriage)
} else {
val userEmailText: TextView = findViewById(R.id.userEmail)
userEmailText.text = "Johndoe@someemail.com"
userNameText.text = "John Doe"
}}
如果用户已登录,则这是对 UpdateUI 的调用,如果是的话,请更新抽屉导航中的配置文件数据,这就是问题所在。如果没有,它将启动 FirebaseUI 登录 Activity 。
override fun onStart() {
super.onStart()
//Checks to see if user is already signed in
if (mAuth.currentUser != null) {
updateUI(mAuth.currentUser)
} else {
//user is not signed in
startActivityForResult(
AuthUI.getInstance().createSignInIntentBuilder().build(),
RC_SIGN_IN)
}}
这是布局
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Android Studio"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/userEmail"
android:layout_width="wrap_content"
最佳答案
抱歉,我整晚都在研究这个问题,并发布了令人生气的代码,哈哈。我将代码更新为问题所在。另外,我刚刚意识到我将值命名为 userEmailText 并尝试设置
userEmail.text = user.email
而不是
userEmailText.text = user.email
这可以解释为什么当我执行 println 时它会正确显示 log cat
关于java - IllegalStateException textview 在 Kotlin 中不能为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610818/