Android Hilt - ошибка приведения многомодульного проекта

Я пытаюсь использовать рукоять для своего проекта, который содержит динамические функции. Я столкнулся с ошибкой, и я не могу полностью понять, почему. Я получаю такую ​​ошибку:

java.lang.ClassCastException: com.social.analysis.DaggerApp_HiltComponents_ApplicationC$ActivityRetainedCImpl$ActivityCImpl$FragmentCImpl cannot be cast to com.social.login.intro.IntroFragment_GeneratedInjector
    at com.social.login.intro.Hilt_IntroFragment.inject(Hilt_IntroFragment.java:94)
    at com.social.login.intro.Hilt_IntroFragment.initializeComponentContext(Hilt_IntroFragment.java:58)
    at com.social.login.intro.Hilt_IntroFragment.onAttach(Hilt_IntroFragment.java:50)
    at androidx.fragment.app.Fragment.onAttach(Fragment.java:1602)
    at com.social.login.intro.Hilt_IntroFragment.onAttach(Hilt_IntroFragment.java:40)

Моя модель просмотра в МОДУЛЕ ВХОДА (динамические функции)

class IntroViewModel @Inject constructor(): ViewModel() {
// TODO: Implement the ViewModel
}

Мой фрагмент в МОДУЛЕ ВХОДА

@AndroidEntryPoint
class IntroFragment : BaseFragment<FragmentIntroBinding, IntroViewModel>(
R.layout.fragment_intro
) {

companion object {
    fun newInstance() = IntroFragment()
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
}

override fun onInitDataBinding() {
    viewBinding.viewModel = viewModel
}
}

Мой базовый фрагмент в модуле пользовательского интерфейса

abstract  class BaseFragment <B: ViewDataBinding, M: ViewModel>(
@LayoutRes
private val layoutId: Int
): Fragment() {

@Inject
lateinit var viewModel: M
lateinit var viewBinding: B
...

Мой класс приложения в модуле приложения

@HiltAndroidApp
class App : SplitCompatApplication() {
}

Мое основное действие в модуле приложения

@AndroidEntryPoint
class MainActivity : AppCompatActivity() 

Я вызываю IntroFragment из модуля App. Потом приложение вылетает.

Структура проекта выглядит так:

«Структура


person Murat AKSU    schedule 29.07.2020    source источник
comment
Вы должны использовать dagger2 вместо рукояти при использовании модуля динамических функций.   -  person Jim    schedule 07.08.2020
comment
вы когда-нибудь решали эту проблему?   -  person Gabriel Sanmartin    schedule 25.08.2020
comment
Вместо рукояти кинжала следует использовать кинжал.   -  person Murat AKSU    schedule 25.08.2020
comment
У меня эта проблема даже без динамических функций ... У меня есть свои действия в простой com.android.library. @MuratAKSU единственное решение, которое вы нашли, - использовать dagger2?   -  person amp    schedule 08.10.2020
comment
Насколько мне известно, эта проблема возникает только при использовании модуля динамических функций. Причиной ошибки могло быть что-то еще. @amp   -  person Murat AKSU    schedule 08.10.2020
comment
@MuratAKSU, ты совершенно прав. После чистки и восстановления все заработало.   -  person amp    schedule 08.10.2020
comment
Вы решили эту проблему? И как   -  person YuTang    schedule 05.11.2020


Ответы (1)