У меня есть веб -слой (LoginWeblayer), вызывающий API. Это очень просто, один из методов переосмыслен из его интерфейса. < /p>
@Singleton
class LoginWebLayer @Inject constructor(
authDataStore: AuthDataStore,
environmentProvider: EnvironmentProvider
) : BaseHttpClient(
authDataStore = authDataStore,
environmentProvider = environmentProvider
), ILoginWebLayer {
override suspend fun login( /* method is implemented */) {}
/* remaining code omitted */
< /code>
Веб -уровень имеет интерфейс (iloginweblayer). < /p>
interface ILoginWebLayer {
suspend fun login(
truckNo: String,
licenceId: String,
userName: String,
)
}
< /code>
Услуга имеет инъекцию интерфейса. < /p>
@Singleton
class LoginService @Inject constructor(
private val loginWebLayer: ILoginWebLayer
) { /* loginWebLayer.login is called in service */ }
< /code>
My LoginViewModel имеет внедренную службу. < /p>
@HiltViewModel
class LoginViewModel @Inject constructor(
private val loginService: LoginService
) : ViewModel() { /* loginService.login is called in viewModel */ }
< /code>
my Composable LoginPage имеет инъекцию ViewModel. < /p>
@Composable
fun LoginPage(
loggedIn: () -> Unit
) {
val viewModel: LoginViewModel = hiltViewModel()
}
< /code>
Я связал интерфейс и реализацию в модуле < /p>
@Module
@InstallIn(SingletonComponent::class)
abstract class WebLayerImplModule {
@Binds
abstract fun getLoginWebLayer(loginWebLayer: LoginWebLayer) : ILoginWebLayer
}
< /code>
И моя MainActivity аннотируется @androidentrypoint. < /p>
Насколько я обнаружил, все это правильно настроено. У меня есть другие ViewModels, введенные успешно, но я впервые попробовал внедрить интерфейс и реализацию. Ошибка, которую я получаю,-это < /p>
»ошибка: [Digger /hisploadbinding] iloginweblayer не может быть предоставлен без примечания @.» Ссылка на модуль - «приложение» и «API». Но я сделал все соответствующие классы публично, пытаясь это исправить, и это еще не изменило ситуации. Что мне не хватает? Основываясь на ошибке, я немного подумал, что он не смог найти мой файл модуля и привязку, но не уверен. Просто чтобы увидеть, был ли один из них проблема. Так что я уверен, что проблема заключается в том, как я связываю интерфейс к его реализации.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ementation
Почему модуль рукояти не связывает интерфейс и реализацию? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1753797343
Anonymous
У меня есть веб -слой (LoginWeblayer), вызывающий API. Это очень просто, один из методов переосмыслен из его интерфейса. < /p>
@Singleton
class LoginWebLayer @Inject constructor(
authDataStore: AuthDataStore,
environmentProvider: EnvironmentProvider
) : BaseHttpClient(
authDataStore = authDataStore,
environmentProvider = environmentProvider
), ILoginWebLayer {
override suspend fun login( /* method is implemented */) {}
/* remaining code omitted */
< /code>
Веб -уровень имеет интерфейс (iloginweblayer). < /p>
interface ILoginWebLayer {
suspend fun login(
truckNo: String,
licenceId: String,
userName: String,
)
}
< /code>
Услуга имеет инъекцию интерфейса. < /p>
@Singleton
class LoginService @Inject constructor(
private val loginWebLayer: ILoginWebLayer
) { /* loginWebLayer.login is called in service */ }
< /code>
My LoginViewModel имеет внедренную службу. < /p>
@HiltViewModel
class LoginViewModel @Inject constructor(
private val loginService: LoginService
) : ViewModel() { /* loginService.login is called in viewModel */ }
< /code>
my Composable LoginPage имеет инъекцию ViewModel. < /p>
@Composable
fun LoginPage(
loggedIn: () -> Unit
) {
val viewModel: LoginViewModel = hiltViewModel()
}
< /code>
Я связал интерфейс и реализацию в модуле < /p>
@Module
@InstallIn(SingletonComponent::class)
abstract class WebLayerImplModule {
@Binds
abstract fun getLoginWebLayer(loginWebLayer: LoginWebLayer) : ILoginWebLayer
}
< /code>
И моя MainActivity аннотируется @androidentrypoint. < /p>
Насколько я обнаружил, все это правильно настроено. У меня есть другие ViewModels, введенные успешно, но я впервые попробовал внедрить интерфейс и реализацию. Ошибка, которую я получаю,-это < /p>
»ошибка: [Digger /hisploadbinding] iloginweblayer не может быть предоставлен без примечания @.» Ссылка на модуль - «приложение» и «API». Но я сделал все соответствующие классы публично, пытаясь это исправить, и это еще не изменило ситуации. Что мне не хватает? Основываясь на ошибке, я немного подумал, что он не смог найти мой файл модуля и привязку, но не уверен. Просто чтобы увидеть, был ли один из них проблема. Так что я уверен, что проблема заключается в том, как я связываю интерфейс к его реализации.
Подробнее здесь: [url]https://stackoverflow.com/questions/79718634/why-is-the-hilt-module-not-binding-the-interface-and-implementation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия