Как использовать Assisted Inject и Inject с рукояткой кинжала?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как использовать Assisted Inject и Inject с рукояткой кинжала?

Сообщение Гость »


У меня есть ViewModel, куда мне нужно во время выполнения добавить некоторые параметры, но также и в этой ViewModel мне нужен репозиторий. Не уверен, что с помощью рукояти кинжала можно совместить Assisted Inject и Inject. Если я попытаюсь использовать CommunityFeedRepository, это выдаст ошибку:

com.test.context.community.repository.CommunityFeedRepository — это введено в com.test.context.community.CommunityFeedViewModel(…, сообществоFeedRepository) com.test.context.community.CommunityFeedViewModel.Factory запрашивается в com.test.context.di.ViewModelFactoryProvider.communityFeedViewModelFactory()

Вот мой код:
класс CommunityFeedViewModel @AssistedInject конструктор( @Assisted("preloadedTiles") Private val preloadedTiles: List, @Assisted("path") частный путь val: String, @Assisted("token") частный токен val: String?, // частная переменная CommunityFeedRepository: CommunityFeedRepository ) : ViewModel() { var tiles: List = preloadedTiles частный val vmPath = путь вар vmToken: строка? = токен частный val tileState = MutableStateFlow (плитки) val til = tileState.asStateFlow() частная приостановка веселья loadTiles() { /*communityFeedRepository.getCommunityFeedTiles(vmPath, vmToken).onSuccess { tileState.value = it.tiles vmToken = it.token }*/ } в этом { viewModelScope.launch { если (tiles.isEmpty()) { нагрузкаТилс() } } } @AssistedFactory интерфейс Фабрика { весело творить( @Assisted("preloadedTiles") preloadedTiles: List, @Assisted("путь") путь: строка, Токен @Assisted("токен"): строка? ): CommunityFeedViewModel } @Suppress("UNCHECKED_CAST") сопутствующий объект { весело обеспечитьфабрику( AssedFactory: Фабрика, preloadedTiles: List, путь: Строка, токен: Строка? ): ViewModelProvider.Factory = объект: ViewModelProvider.Factory { переопределить fun create(modelClass: Class): T { верните AssistedFactory.create(preloadedTiles, путь, токен) как T } } } } @Композитный веселое сообществоFeedViewModel( preloadedTiles: List, путь: Строка, токен: Строка? ): CommunityFeedViewModel { val фабрика = EntryPointAccessors.fromActivity( LocalContext.current как активность, ViewModelFactoryProvider::class.java ).communityFeedViewModelFactory() вернуть модель представления( фабрика = CommunityFeedViewModel.provideFactory( фабрика, preloadedTiles = preloadedTiles, путь = путь, токен = токен ), ключ = путь ) }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • @Inject lateinit var против конструктора @Inject на рукояти кинжала
    Anonymous » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • @Inject lateinit var против конструктора @Inject на рукояти кинжала
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • «java.lang.NoSuchMethodError в KSP с рукояткой кинжала и комнатой»
    Anonymous » » в форуме JAVA
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • «java.lang.NoSuchMethodError в KSP с рукояткой кинжала и комнатой»
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • «java.lang.NoSuchMethodError в KSP с рукояткой кинжала и комнатой»
    Anonymous » » в форуме JAVA
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»