Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
SavedStateViewModelFactory construido con un constructor vacío

Después de actualizar el componente de navigation y la versión del modelo de vista del lifecycle viewmodel a 2.5.0-alpha01, tengo el siguiente problema.

java.lang.RuntimeException: no se puede iniciar la actividad ComponentInfo{com.atcc.aewp/com.atcc.aewp.activity.SplashActivity}: java.lang.UnsupportedOperationException: SavedStateViewModelFactory construido con un constructor vacío solo admite llamadas para crear (modelClass: Class, extras: CreationExtras).

Se lanza una excepción cuando se carga el modelo de vista

 open class BaseActivity : AppCompatActivity() { private val appLanguageViewModel: AppLanguageViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) appLanguageViewModel.result.observe(this) { ... } } }

Aquí está mi clase de modelo de vista

 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)) } } }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Solución alterna;

 private val viewModel: AppLanguageViewModel by viewModels { SavedStateViewModelFactory(application, this) }

Razón;

Debido a que no todo usa la nueva API de ViewModelFactory, obtenemos este bloqueo. La fábrica predeterminada en ComponentActivity es SavedStateViewModelFactory sin ningún parámetro de constructor.

Tenemos un problema con HiltViewModelFactory. Llama al método de creación sin pasar nuevos valores de CreationExtras. Supongo que esto debería arreglarse en la empuñadura en nuestro caso. Si puede compartir el resto del seguimiento de la pila, también podríamos descubrir la causa raíz en su caso.

over 4 years ago · Santiago Trujillo Report

0

En nuestro caso, la solución de Sinan Kozak no funcionó. Los problemas actuales a los que nos enfrentábamos porque estábamos usando las siguientes versiones de navegación y ciclo de vida

ciclo vital

 implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'

navegación

 implementation 'androidx.navigation:navigation-fragment-ktx:2.5.0-alpha01' implementation 'androidx.navigation:navigation-ui-ktx:2.5.0-alpha01'

Esto provocó que la biometría del teléfono no funcionara. Por lo tanto, la solución por nuestra parte fue volver a la versión estable anterior de las dependencias de navegación.

 implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'

Supongo que la mejor regla general es no usar dependencias de compilación alfa en producción

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!