gpt4 book ai didi

android - SavedStateViewModelFactory 用空构造函数构造

转载 作者:行者123 更新时间:2023-12-04 23:41:34 27 4
gpt4 key购买 nike

更新后navigation组件和 lifecycle viewmodel版本为 2.5.0-alpha01 我有以下问题。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.atcc.aewp/com.atcc.aewp.activity.SplashActivity}: java.lang.UnsupportedOperationException: SavedStateViewModelFactory constructed with empty constructor supports only calls to create(modelClass: Class, extras: CreationExtras).


加载 View 模型时抛出异常
open class BaseActivity : AppCompatActivity() {

private val appLanguageViewModel: AppLanguageViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

appLanguageViewModel.result.observe(this) {
...
}
}
}
这是我的 View 模型类
class AppLanguageViewModel : ViewModel() {

private val languageLiveData = MutableLiveData<Event<ApplicationLanguage>>()

val result: LiveData<Event<ApplicationLanguage>> = languageLiveData

fun setLanguage(applicationLanguage: ApplicationLanguage) {
if (LanguagePreferences.instance().setLanguage(applicationLanguage.name)) {
languageLiveData.postValue(Event(applicationLanguage))
}
}
}

最佳答案

解决方法;

    private val viewModel: AppLanguageViewModel by viewModels {
SavedStateViewModelFactory(application, this)
}
原因;
因为不是所有的东西都使用 ViewModelFactory 的新 API,所以我们得到了这个崩溃。 ComponentActivity 中的默认工厂是 SavedStateViewModelFactory,没有任何构造函数参数。
HiltViewModelFactory 存在问题。它调用 create 方法而不传递新的 CreationExtras 值。我认为这应该在我们的案例中得到解决。如果您可以共享堆栈跟踪的其余部分,我们也可能会找出您案例的根本原因。

关于android - SavedStateViewModelFactory 用空构造函数构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70931204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com