Java.lang.RuntimeException: невозможно начать действие ComponentInfo{}: java.lang.reflect.InvocatageTargetExceptionAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Java.lang.RuntimeException: невозможно начать действие ComponentInfo{}: java.lang.reflect.InvocatageTargetException

Сообщение Anonymous »

Я пытаюсь использовать MVVM с Room DB в своем приложении для Android, но получаю это исключение в SplashActivity.
Все работало нормально, пока я не добавил модель представления и наблюдателей

Код: Выделить всё

class SplashActivity : AppCompatActivity() {

private lateinit var mBinding: ActivitySplashBinding
private lateinit var authVM: AuthViewmodel

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = ActivitySplashBinding.inflate(layoutInflater)
setContentView(mBinding.root)

authVM = ViewModelProvider(this)[AuthViewmodel::class.java]

observeLoginStatus()
}

private fun observeLoginStatus() {
authVM.getUserLoginStatus?.observe(this, Observer { loggedInUser ->
if (loggedInUser != null) {
Handler().postDelayed({
navigateToMainActivity()
}, 3000)
} else {
Handler().postDelayed({
navigateToAuthActivity()
}, 3000)
}
})
}

private fun navigateToMainActivity() {
val intent = Intent(this@SplashActivity, MainActivity::class.java)
startActivity(intent)
finish()
}

private fun navigateToAuthActivity() {
val intent = Intent(this@SplashActivity, AuthActivity::class.java)
startActivity(intent)
finish()
}
}

Он пытался отладить мой код и решения из стека поверх потока
это logcat
[img]https://i. sstatic.net/6mNRfOBM.png[/img]
Изображение
Изображение

Код для AuthViewmodel, поскольку в трассировке стека также упоминается authViewmodel:

Код: Выделить всё

class AuthViewmodel : ViewModel() {
private var authRepo = AuthRepository()

val getUserLoginStatus: LiveData? = authRepo.getUserLogInStatus()

private val _getUser = MutableLiveData()
val getUser: LiveData get() = _getUser

private val _insertUserResult = MutableLiveData()
val insertUserResult: LiveData get() = _insertUserResult

fun insertUser(user: User) {
viewModelScope.launch {
val result = authRepo.insertUser(user)
_insertUserResult.postValue(result)
}
}

fun fetchUser(username: String, password: String) {
viewModelScope.launch {
val user = authRepo.getUser(username, password)
_getUser.postValue(user)
}
}

fun updateUserStatus(user: User) {
viewModelScope.launch {
authRepo.updateUserStatus(user)
}
}
Код для AuthRepo:

Код: Выделить всё

class AuthRepository {
private fun getDbInstance(): Task1Database {
return Task1Database.getDatabase(Task1.getContext().applicationContext)
}

suspend fun insertUser(user: User): Long {
return getDbInstance().userDao().insertUser(user)
}

fun getUser(username: String, password: String): User? {
return getDbInstance().userDao().getUser(username, password)?.value
}

fun getUserLogInStatus(): LiveData? {
return getDbInstance().userDao().getUserLogInStatus()
}

suspend fun updateUserStatus(user: User) {
getDbInstance().userDao().updateUserStatus(user)
}
Код задачи 1, на который указывает ошибка свойства lateinit:

Код: Выделить всё

class Task1 : Application(), LifecycleObserver {

override fun onCreate() {
super.onCreate()
mContext = this
}

companion object {
private lateinit var mContext: Context
fun getContext(): Context {
return mContext
}

}
Код для БД:

Код: Выделить всё

@Database(entities = [User::class], version = 1, exportSchema = false)
абстрактный класс Task1Database : RoomDatabase() {

Код: Выделить всё

abstract fun userDao(): AuthDao

companion object {
@Volatile
private var INSTANCE: Task1Database? = null

fun getDatabase(context: Context): Task1Database {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
Task1Database::class.java,
"app-database"
).build()
INSTANCE = instance
instance
}
}
}
}

Подробнее здесь: https://stackoverflow.com/questions/787 ... -java-lang
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Java.lang.RuntimeException: невозможно начать действие ComponentInfo pt2
    Anonymous » » в форуме JAVA
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Java.lang.RuntimeException: невозможно начать действие ComponentInfo
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Java.lang.runtimeexception: невозможно создать ComponentInfo ComponentInfo
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Java.lang.RuntimeException: невозможно запустить действие ComponentInfo с двоичным XML-файлом
    Anonymous » » в форуме Android
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Установлен APK Android 12, покажите: E AndroidRuntime: java.lang.RuntimeException: невозможно начать действие ComponentI
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»