Приложение сбоя с ViewModel Android JetPack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение сбоя с ViewModel Android JetPack Compose

Сообщение Anonymous »

С конфигурацией под приложением сбивается, когда открывается @composable View Convelodel . Ниже приведено сообщение об ошибке. Я не уверен, является ли это конфигурацией базы данных в ViewModel . Первоначально я хотел создать экземпляр базы данных в ViewModel и перенести контекст в viewModel , но я читаю, что не является наилучшей практикой.
viewModel:
class DataModel(): ViewModel() {
lateinit var database: AppDatabase

fun setDatabase(context: Context) {
database = Room.databaseBuilder(
context,
AppDatabase::class.java, "database"
).build()
}

val data: StateFlow = flow {
emit(database.dataDao().getAll())
} as StateFlow

fun addData(data: Data) {
viewModelScope.launch {
database.dataDao().insert(data)
}
}
}
< /code>
poomdatabase: < /p>
@Database(entities = [Data::class], version = 1)
@TypeConverters(BooleanArrayConverter::class)
abstract class AppDatabase: RoomDatabase() {
abstract fun data(): DataDao
}
< /code>
@dao interface: < /p>
@Dao
interface DataDao {
@Query("SELECT * FROM data")
suspend fun getAll(): List

@Insert
suspend fun insert(vararg data: Data)
}
< /code>
@composable view: < /p>
fun View(
dataModel: DataModel = viewModel(),
) {
var context = LocalContext.current

Button(
onClick = {
dataModel.setDatabase(context)
},
) {
Text("Button")
}
}
< /code>
ошибка: < /p>
FATAL EXCEPTION: main
Process: com.example.app, PID: 12733
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932) 
Caused by: j a v a . l a n g . r e f l e c t . I n v o c a t i o n T a r g e t E x c e p t i o n < b r / > a t j a v a . l a n g . r e f l e c t . C o n s t r u c t o r . n e w I n s t a n c e 0 ( N a t i v e M e t h o d ) < b r / > a t j a v a . l a n g . r e f l e c t . C o n s t r u c t o r . n e w I n s t a n c e ( C o n s t r u c t o r . j a v a : 3 4 3 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . i n t e r n a l . J v m V i e w M o d e l P r o v i d e r s . c r e a t e V i e w M o d e l ( J v m V i e w M o d e l P r o v i d e r s . k t : 3 8 ) < b r / > a t a n d r o i d x . l i f e c y c l e . V i e w M o d e l P r o v i d e r $ N e w I n s t a n c e F a c t o r y . c r e a t e ( V i e w M o d e l P r o v i d e r . a n d r o i d . k t : 1 8 5 ) < b r / > a t a n d r o i d x . l i f e c y c l e . V i e w M o d e l P r o v i d e r $ A n d r o i d V i e w M o d e l F a c t o r y . c r e a t e ( V i e w M o d e l P r o v i d e r . a n d r o i d . k t : 3 0 9 ) < b r / > a t a n d r o i d x . l i f e c y c l e . V i e w M o d e l P r o v i d e r $ A n d r o i d V i e w M o d e l F a c t o r y . c r e a t e ( V i e w M o d e l P r o v i d e r . a n d r o i d . k t : 2 6 9 ) < b r / > a t a n d r o i d x . l i f e c y c l e . S a v e d S t a t e V i e w M o d e l F a c t o r y . c r e a t e ( S a v e d S t a t e V i e w M o d e l F a c t o r y . a n d r o i d . k t : 1 4 2 ) < b r / > a t a n d r o i d x . l i f e c y c l e . S a v e d S t a t e V i e w M o d e l F a c t o r y . c r e a t e ( S a v e d S t a t e V i e w M o d e l F a c t o r y . a n d r o i d . k t : 1 1 2 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . V i e w M o d e l P r o v i d e r I m p l _ a n d r o i d K t . c r e a t e V i e w M o d e l ( V i e w M o d e l P r o v i d e r I m p l . a n d r o i d . k t : 3 4 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . V i e w M o d e l P r o v i d e r I m p l . g e t V i e w M o d e l $ l i f e c y c l e _ v i e w m o d e l _ r e l e a s e ( V i e w M o d e l P r o v i d e r I m p l . k t : 6 0 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . V i e w M o d e l P r o v i d e r I m p l . g e t V i e w M o d e l $ l i f e c y c l e _ v i e w m o d e l _ r e l e a s e $ d e f a u l t ( V i e w M o d e l P r o v i d e r I m p l . k t : 4 3 ) < b r / > a t a n d r o i d x . l i f e c y c l e . V i e w M o d e l P r o v i d e r . g e t ( V i e w M o d e l P r o v i d e r . a n d r o i d . k t : 9 2 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . c o m p o s e . V i e w M o d e l K t _ _ V i e w M o d e l K t . g e t ( V i e w M o d e l . k t : 1 7 2 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . c o m p o s e . V i e w M o d e l K t . g e t ( U n k n o w n S o u r c e : 1 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . c o m p o s e . V i e w M o d e l K t _ _ V i e w M o d e l K t . v i e w M o d e l ( V i e w M o d e l . k t : 1 0 6 ) < b r / > a t a n d r o i d x . l i f e c y c l e . v i e w m o d e l . c o m p o s e . V i e w M o d e l K t . v i e w M o d e l ( U n k n o w n S o u r c e : 1 ) < b r / > a t c o m . e x a m p l e . a p p . V i e w . N e w J o u r n a l E n t r y S h e e t ( V i e w . k t : 1 7 4 ) < b r / > a t c o m . e x a m p l e . a p p . C o m p o s a b l e S i n g l e t o n s $ V i e w K t $ l a m b d a - 1 $ 1 . i n v o k e ( J o u r n a l E n t r y S c r e e n . k t : 4 5 ) < b r / > a t c o m . e x a m p l e . a p p . C o m p o s a b l e S i n g l e t o n s $ V i e w K t $ l a m b d a - 1 $ 1 . i n v o k e ( J o u r n a l E n t r y S c r e e n . k t : 4 4 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 3 0 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t K t $ M o d a l B o t t o m S h e e t C o n t e n t $ 7 . i n v o k e ( M o d a l B o t t o m S h e e t . k t : 3 4 1 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t K t $ M o d a l B o t t o m S h e e t C o n t e n t $ 7 . i n v o k e ( M o d a l B o t t o m S h e e t . k t : 2 8 9 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 2 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . S u r f a c e K t $ S u r f a c e $ 1 . i n v o k e ( S u r f a c e . k t : 1 2 6 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . S u r f a c e K t $ S u r f a c e $ 1 . i n v o k e ( S u r f a c e . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 2 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 3 6 4 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . S u r f a c e K t . S u r f a c e - T 9 B R K 9 s ( S u r f a c e . k t : 1 0 5 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t K t . M o d a l B o t t o m S h e e t C o n t e n t - I Q k w c L 4 ( M o d a l B o t t o m S h e e t . k t : 2 1 8 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t K t $ M o d a l B o t t o m S h e e t $ 3 . i n v o k e ( M o d a l B o t t o m S h e e t . k t : 1 7 5 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t K t $ M o d a l B o t t o m S h e e t $ 3 . i n v o k e ( M o d a l B o t t o m S h e e t . k t : 1 6 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 2 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > 2 0 2 5 - 0 7 - 0 7 1 2 : 1 9 : 1 7 . 6 1 2 1 2 7 3 3 - 1 2 7 3 3 A n d r o i d R u n t i m e c o m . e x a m p l e . p e a c e o f m i n d E a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t _ a n d r o i d K t $ M o d a l B o t t o m S h e e t D i a l o g $ d i a l o g $ 1 $ 1 $ 1 . i n v o k e ( M o d a l B o t t o m S h e e t . a n d r o i d . k t : 3 0 0 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t _ a n d r o i d K t $ M o d a l B o t t o m S h e e t D i a l o g $ d i a l o g $ 1 $ 1 $ 1 . i n v o k e ( M o d a l B o t t o m S h e e t . a n d r o i d . k t : 2 9 6 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 2 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . m a t e r i a l 3 . M o d a l B o t t o m S h e e t D i a l o g L a y o u t . C o n t e n t ( M o d a l B o t t o m S h e e t . a n d r o i d . k t : 3 5 4 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 0 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 0 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 2 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 3 6 4 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . C o m p o s i t i o n L o c a l s K t . P r o v i d e C o m m o n C o m p o s i t i o n L o c a l s ( C o m p o s i t i o n L o c a l s . k t : 2 1 6 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t $ P rovideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:110)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:140)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:139)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:384)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:139)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:123)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.internal.Utils_jvmKt.invokeComposable(Utils.jvm.kt:27)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(Composer.kt:3694)
at androidx.compose.runtime.ComposerImpl.composeContent--ZbOJvo$runtime_release(Composer.kt:3616)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:792)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1132)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4034)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4034)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4034)
at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:677)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:616)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:123)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1963)
2025-07-07 12:19:17.613 12733-12733 AndroidRuntime com.example.app E at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:114)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:168)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.jvm.kt:313)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.jvm.kt:191)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:121)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:2042)
at android.view.View.dispatchAttachedToWindow(View.java:23105)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3520)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3527)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3527)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3527)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3527)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3618)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3077)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10644)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1570)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
at android.view.Choreographer.doFrame(Choreographer.java:1108)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:248)
at android.os.Looper.loop(Looper.java:338)
at android.app.ActivityThread.main(ActivityThread.java:9067) ... 3 more
Caused by: java.lang.ClassCastException: kotlinx.coroutines.flow.SafeFlow cannot be cast to kotlinx.coroutines.flow.StateFlow
at DataModel.(Data.kt:29)
... 104 more


Подробнее здесь: https://stackoverflow.com/questions/796 ... ck-compose
Ответить

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

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

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

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

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