Форум для тех, кто программирует под Android
Anonymous
Как правильно использовать рукоять с помощью ViewModel с помощью @hiltviewmodel?
Сообщение
Anonymous » 06 май 2025, 05:03
У меня есть проблема с рукояткой и просмоткой. Я получаю runtimeexception: < /p>
Код: Выделить всё
MainViewModel> has no zero argument constructor
< /code>
Я потратил часы, чтобы найти то, что не так ... < /p>
Вот источники из моего кода: < /p>
appmodule: < /p>
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
@Provides
fun provideCurrencyApi(): CurrencyApi = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(CurrencyApi::class.java)
@Singleton
@Provides
fun provideMainRepository(api: CurrencyApi): MainRepository = DefaultMainRepository(api)
@Singleton
@Provides
fun provideDispatchers(): DispatcherProvider = object : DispatcherProvider {
override val main: CoroutineDispatcher
get() = Dispatchers.Main
override val io: CoroutineDispatcher
get() = Dispatchers.IO
override val default: CoroutineDispatcher
get() = Dispatchers.Default
override val unconfined: CoroutineDispatcher
get() = Dispatchers.Unconfined
}
}
< /code>
mainActivity: < /p>
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val viewModel: MainViewModel by viewModels()
< /code>
mainviewmodel: < /p>
@HiltViewModel
class MainViewModel @Inject constructor(
private val repository: MainRepository,
private val dispatchers: DispatcherProvider
) : ViewModel() {
< /code>
mainrepository < /p>
class DefaultMainRepository @Inject constructor(
private val api: CurrencyApi
) : MainRepository {
< /code>
Hee - зависимости градл: < /p>
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation "androidx.activity:activity-ktx:1.4.0"
implementation 'com.google.dagger:hilt-android:2.40.5'
kapt 'com.google.dagger:hilt-compiler:2.40.5'
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt'androidx.hilt:hilt-compiler:1.0.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.0'
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.40.5'
kaptAndroidTest 'com.google.dagger:hilt-compiler:2.40.5'
testImplementation 'com.google.dagger:hilt-android-testing:2.40.5'
kaptTest 'com.google.dagger:hilt-compiler:2.40.5'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
< /code>
Приложение: < /p>
@HiltAndroidApp
class CurrencyApplication: Application()
< /code>
manifest: < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/71023880/how-to-properly-use-hilt-with-viewmodel-using-hiltviewmodel[/url]
1746496995
Anonymous
У меня есть проблема с рукояткой и просмоткой. Я получаю runtimeexception: < /p> [code]MainViewModel> has no zero argument constructor < /code> Я потратил часы, чтобы найти то, что не так ... < /p> Вот источники из моего кода: < /p> appmodule: < /p> @Module @InstallIn(SingletonComponent::class) object AppModule { @Singleton @Provides fun provideCurrencyApi(): CurrencyApi = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build() .create(CurrencyApi::class.java) @Singleton @Provides fun provideMainRepository(api: CurrencyApi): MainRepository = DefaultMainRepository(api) @Singleton @Provides fun provideDispatchers(): DispatcherProvider = object : DispatcherProvider { override val main: CoroutineDispatcher get() = Dispatchers.Main override val io: CoroutineDispatcher get() = Dispatchers.IO override val default: CoroutineDispatcher get() = Dispatchers.Default override val unconfined: CoroutineDispatcher get() = Dispatchers.Unconfined } } < /code> mainActivity: < /p> @AndroidEntryPoint class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private val viewModel: MainViewModel by viewModels() < /code> mainviewmodel: < /p> @HiltViewModel class MainViewModel @Inject constructor( private val repository: MainRepository, private val dispatchers: DispatcherProvider ) : ViewModel() { < /code> mainrepository < /p> class DefaultMainRepository @Inject constructor( private val api: CurrencyApi ) : MainRepository { < /code> Hee - зависимости градл: < /p> dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation "androidx.activity:activity-ktx:1.4.0" implementation 'com.google.dagger:hilt-android:2.40.5' kapt 'com.google.dagger:hilt-compiler:2.40.5' implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' kapt'androidx.hilt:hilt-compiler:1.0.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0' implementation 'androidx.navigation:navigation-fragment-ktx:2.4.0' androidTestImplementation 'com.google.dagger:hilt-android-testing:2.40.5' kaptAndroidTest 'com.google.dagger:hilt-compiler:2.40.5' testImplementation 'com.google.dagger:hilt-android-testing:2.40.5' kaptTest 'com.google.dagger:hilt-compiler:2.40.5' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } < /code> Приложение: < /p> @HiltAndroidApp class CurrencyApplication: Application() < /code> manifest: < /p> Подробнее здесь: [url]https://stackoverflow.com/questions/71023880/how-to-properly-use-hilt-with-viewmodel-using-hiltviewmodel[/url]
0 Ответы
44 Просмотры
Последнее сообщение Anonymous
28 окт 2024, 19:33
0 Ответы
16 Просмотры
Последнее сообщение Anonymous
04 янв 2025, 15:08
0 Ответы
28 Просмотры
Последнее сообщение Anonymous
22 июн 2024, 21:30
0 Ответы
28 Просмотры
Последнее сообщение Anonymous
23 июн 2024, 11:07
0 Ответы
33 Просмотры
Последнее сообщение Anonymous
23 июн 2024, 18:58