android - 清除 ViewModel 抛出 IllegalArgumentException
问题描述
我有一个ViewModel由一个Activity初始化并由多个Fragments共享,所以我有一个仅存在于一个Activity的应用程序。
当我删除我当前的设备时,我也会手动清除我的ViewModel
activity?.viewModelStore?.clear()
在此之后,我回到另一个片段并调用
bleDeviceViewModel = ViewModelProvider(requireActivity()).get(BleDeviceViewModel::class.java)
抛出以下错误->
Process: de.app.ilockit, PID: 2120
java.lang.IllegalArgumentException: SavedStateProvider with the given key is already registered
at androidx.savedstate.SavedStateRegistry.registerSavedStateProvider(SavedStateRegistry.java:111)
at androidx.lifecycle.SavedStateHandleController.attachToLifecycle(SavedStateHandleController.java:50)
at androidx.lifecycle.SavedStateHandleController.create(SavedStateHandleController.java:70)
at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.java:67)
at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.java:84)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:107)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
at de.app.ui.home.HomeFragment.onCreateView(HomeFragment.kt:43)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2950)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:515)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2177)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2094)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
注意:如果有任何关系,我使用 Hilt 作为依赖注入
解决方案
推荐阅读
- restart - 在 cockroachdb 中,为什么不确定性重新启动不更新不确定性窗口的上限?
- php - 从数据库中删除多个表的数据
- python-3.x - 与nest_asyncio一起使用的aiohttp猴子补丁
- javascript - 将二维数组转换为对象并使用第一个数组元素作为键
- sip - 用于 B2BUA 的 PJSIP 库级别
- linq - 创建 Linq 表达式
> 对于给定的属性名称 - python-3.x - 如何从提供的向量中找到最大的数字?
- python - MIP 的多个旅行推销员问题
- svg - 是否有使用 Svelte 将事件绑定到 SVG 元素(如路径)的方法
- java - 为 Enum 实施过滤器以在插入前检查值