在将navigation
组件和lifecycle viewmodel
版本更新为2.5.0-alpha01后,我遇到了以下问题。
java.lang.RuntimeException:无法启动活动组件信息{com. atcc. aewp/com. atcc. aewp.活动启动活动}:不支持的操作异常:使用空构造函数构造的SavedStateViewModelFactory仅支持对create(modelClass:类,额外:创作附加)。
加载视图模型时引发异常
open class BaseActivity : AppCompatActivity() {
private val appLanguageViewModel: AppLanguageViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
appLanguageViewModel.result.observe(this) {
...
}
}
}
下面是我的视图模型类
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))
}
}
}
2条答案
按热度按时间ztigrdn81#
变通方案;
原因;
因为不是所有的东西都使用ViewModelFactory的新API,ComponentActivity中默认的工厂是SavedStateViewModelFactory,没有任何构造函数参数。
我们有一个问题与HiltViewModelFactory。它调用创建方法没有传递新的CreationExtras值。我假设这应该是在我们的情况下解决。如果你可以分享堆栈跟踪的其余部分,我们可能会找到根本原因在您的情况了。
mqkwyuun2#
在我们的案例中希南Kozak的解决方案并不奏效。我们目前面临的问题是因为我们使用了以下版本的导航和生命周期
生命周期
导航
这导致了手机上的生物识别功能无法正常工作,因此,我们最终的解决方案是恢复到以前稳定版本的导航依赖项
我想最好的经验法则是不要在生产中使用alpha构建依赖项