Использование нескольких @Assisted одного типа ⇐ Android
-
Гость
Использование нескольких @Assisted одного типа
Я использую Dagger Assisted в своей ViewModel. Когда я создаю свою ViewModel с одним параметром @Assisted того же типа, она работает нормально. Однако проблемы возникают, когда имеется более одного параметра @Assisted одного типа.
Вот мой класс ViewModel:
конструктор класса SampleViewModel @AssistedInject( @Assisted val param1: Плавающее, @Assisted val param2: Плавающее, @Assisted val param3: Плавающее, ) : ViewModel() { @AssistedFactory интерфейс Фабрика { весело творить( параметр1: Плавающее, параметр2: Плавающее, параметр3: Плавающее число ): Сэмплевиевмодель } сопутствующий объект { весело обеспечитьфабрику( AssedFactory: Фабрика, параметр1: Плавающее, параметр2: Плавающее, параметр3: Плавающее число ): ViewModelProvider.Factory = объект: ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") переопределить fun create(modelClass: Class): T { вернуть AssistedFactory.create( параметр1, параметр2, параметр3 ) как Т } } } // ....... } Вот фрагмент:
@AndroidEntryPoint класс SampleFragment : Fragment() { @Инжект lateinit var viewModelAssistedFactory: SampleViewModel.Factory переопределить val viewModel: SampleViewModel by viewModels { SampleViewModel.provideFactory( ViewModelAssistedFactory, аргс.парам1, аргс.парам2, args.param3 ) } // ....... } Ошибка, возникающая для всех параметров:
ошибка: конструктор @AssistedInject имеет дублирующийся тип @Assisted: @Assisted float. Рассмотрите возможность установки идентификатора для параметра, используя @Assisted("identifier") как в фабрике, так и в конструкторе @AssistedInject. float param1, @dagger.assisted.Assisted ^ Как мне справиться с этой ошибкой?
Я использую Dagger Assisted в своей ViewModel. Когда я создаю свою ViewModel с одним параметром @Assisted того же типа, она работает нормально. Однако проблемы возникают, когда имеется более одного параметра @Assisted одного типа.
Вот мой класс ViewModel:
конструктор класса SampleViewModel @AssistedInject( @Assisted val param1: Плавающее, @Assisted val param2: Плавающее, @Assisted val param3: Плавающее, ) : ViewModel() { @AssistedFactory интерфейс Фабрика { весело творить( параметр1: Плавающее, параметр2: Плавающее, параметр3: Плавающее число ): Сэмплевиевмодель } сопутствующий объект { весело обеспечитьфабрику( AssedFactory: Фабрика, параметр1: Плавающее, параметр2: Плавающее, параметр3: Плавающее число ): ViewModelProvider.Factory = объект: ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") переопределить fun create(modelClass: Class): T { вернуть AssistedFactory.create( параметр1, параметр2, параметр3 ) как Т } } } // ....... } Вот фрагмент:
@AndroidEntryPoint класс SampleFragment : Fragment() { @Инжект lateinit var viewModelAssistedFactory: SampleViewModel.Factory переопределить val viewModel: SampleViewModel by viewModels { SampleViewModel.provideFactory( ViewModelAssistedFactory, аргс.парам1, аргс.парам2, args.param3 ) } // ....... } Ошибка, возникающая для всех параметров:
ошибка: конструктор @AssistedInject имеет дублирующийся тип @Assisted: @Assisted float. Рассмотрите возможность установки идентификатора для параметра, используя @Assisted("identifier") как в фабрике, так и в конструкторе @AssistedInject. float param1, @dagger.assisted.Assisted ^ Как мне справиться с этой ошибкой?
Мобильная версия