‹Identifier› ожидается Android Hilt

Я хочу попробовать Hilt DI в своем приложении

Я сделал все шаги, чтобы добавить Hilt в свое приложение, но моя проблема в том, что он показывает мне ошибку в My BaseFragment, говорит:

ошибка: ожидается topLevelClass = BaseFragment ‹T, D› .class ^ error: [Hilt]

а BaseFragment прост:

@AndroidEntryPoint
abstract class BaseFragment<T : ViewModel,D : ViewDataBinding>() : Fragment() {

@Inject
lateinit var viewModel: T by viewModels()


 }

а для viewModel by viewModels () не работает показать мне ошибку

Нельзя использовать "T" как параметр овеществленного типа. Вместо этого используйте класс. Тип Lazy не имеет метода setValue (BaseFragment ‹T, D›, KProperty ‹*›, T) и, следовательно, не может служить делегатом для var (свойство чтения-записи). **

поэтому я использовал Factory, как и в Dagger, и он работает, но все же моя проблема в

BaseFragment

Я благодарен вам за помощь и заранее спасибо

РЕДАКТИРОВАТЬ: ответьте на эти проблемы на github, и они это скажут была ошибка, и они забанят @AndroidEntryPoint для базовых классов с параметрами типа -


person Ayoub Benzahia    schedule 11.08.2020    source источник


Ответы (1)


Как я уже упоминал здесь, это может быть ошибка внутри Hilt.

Проверьте соответствующую проблему с github: https://github.com/google/dagger/issues/2042

Вы можете исправить это, переместив @AndroidEntryPoint из абстрактного класса с параметрами в дочерний класс без параметров типа.

person whý    schedule 14.08.2020
comment
да, это ошибка, я возражаю против этих проблем на github, и они говорят, что это ошибка и они забанят @AndroidEntryPoint для базовых классов с параметрами типа - person Ayoub Benzahia; 16.08.2020