Android studio 我在Android Studio中不断收到未初始化的DPropertyAccessException

Android studio 我在Android Studio中不断收到未初始化的DPropertyAccessException,android-studio,kotlin,android-room,Android Studio,Kotlin,Android Room,我想在我的应用程序中使用本地数据库的Room实现一个登录系统。 但不知何故,我一直得到以下例外: 致命异常:线程2 kotlin.UninitializedPropertyAccessException:lateinit属性登录尚未初始化 在我的登录活动中,输入的用户数据应该传递给DAO,以便对其运行特定查询,并检查数据库中是否存在该用户。这里是我的LogIn.kt: package com.example.terito import android.content.Intent import

我想在我的应用程序中使用本地数据库的Room实现一个登录系统。 但不知何故,我一直得到以下例外:

致命异常:线程2 kotlin.UninitializedPropertyAccessException:lateinit属性登录尚未初始化

在我的登录活动中,输入的用户数据应该传递给DAO,以便对其运行特定查询,并检查数据库中是否存在该用户。这里是我的LogIn.kt:

package com.example.terito

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import com.example.terito.data.LogIn
import com.example.terito.data.UserViewModel
import com.example.terito.data.userDao
import com.example.terito.data.userDatabase
import kotlinx.android.synthetic.main.log_in.*

class LogInActivity : AppCompatActivity() {

private lateinit var mUserViewModel: UserViewModel
private lateinit var userDataB : userDatabase
private lateinit var userDao: userDao
private lateinit var logIn: LogIn

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.log_in)

    val inputName = username_logIn.text.toString()
    val inputPassword = password_logIn.text.toString()

    kein_profil_klick.setOnClickListener {
        startActivity(Intent(this, MainActivity::class.java))
    }

    mUserViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
    logIn = LogIn(userName = inputName, password = inputPassword)
    userDataB = userDatabase.getDatabase(this)

    // does entered user exist
    logIn_button.setOnClickListener {
        // data entered?
      /*  if (inputName.isEmpty() || inputPassword.isEmpty()) {
            Toast.makeText(this, "Bitte alle Felder ausfüllen!", Toast.LENGTH_LONG).show()
        } else { */
            userDao = userDataB.userDao()
            // check for user in background thread
            Thread (kotlinx.coroutines.Runnable {
                logIn = userDao.findUser(inputName, inputPassword)
                if (logIn == null) {
                    // entered user does not exist
                    runOnUiThread { Runnable {
                        Toast.makeText(this, "entered use does not exist!", Toast.LENGTH_LONG).show()
                    } }
                } else {
                    // entered user does exist
                    Toast.makeText(this, "LogIn successfull", Toast.LENGTH_LONG).show()
                }
            }).start()
      //  }

    }

    // clear user DB
    clearButton.setOnClickListener {
        mUserViewModel.cleanUserTable()
        Log.d("CLEARED", "DATABASE HAS BEEN CLEARED")
    }

  }

}
下面是我尝试初始化的相应登录类:

package com.example.terito.data

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey


@Entity(tableName = "users_data")
  class user(
  @PrimaryKey(autoGenerate = true)
  val id : Int, val mail : String, val userName : String, val password : String)

  class LogIn(
   @ColumnInfo(name = "userName") val userName: String,
   @ColumnInfo(name = "password") val password: String
  )
我对科特林的情况还比较陌生,如果有任何进展,我都会很感激的