'SavedStateViewModelFactory constructed with empty constructor
After updating navigation component and lifecycle viewmodel version to 2.5.0-alpha01 I have got following issue.
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).
Exception throws when view model is loaded
open class BaseActivity : AppCompatActivity() {
private val appLanguageViewModel: AppLanguageViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
appLanguageViewModel.result.observe(this) {
...
}
}
}
Here is my view model class
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))
}
}
}
Solution 1:[1]
In our case Sinan Kozak work around did not work. The current issues we were facing where because we were using the following versions of navigation and lifecycle
lifecycle
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
navigation
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.0-alpha01'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.0-alpha01'
This resulted in Biometrics on the phone not working. So, the solution our end was to revert to the previous stable release of the navigation dependencies
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
I guess the best rule of thumb is do not use alpha build dependencies in production
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | George |
