Исправление: Внедрение фрагмента массива работает с Java, но не Kotlin - PullRequest
0 голосов
/ 03 февраля 2020

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

Мой Dagger модуль содержит следующее:

        @Provides
        @Singleton
        @Named("LOADING_FRAGMENTS")
        fun providesLoadingFragments(): Array<Fragment> = arrayOf(IntroFragment(), DetailsFragment(), ExitFragment())

Класс в Java, который работает:

public class LoadingActivity extends BaseActivity {

    @Inject
    @Named("LOADING_FRAGMENTS")
    Fragment[] fragments;

...

Преобразованный класс в Kotlin:

class LoadingActivity : BaseActivity() {

    @Inject
    @Named("LOADING_FRAGMENTS")
    lateinit var fragments: Array<Fragment>

Только при преобразовании LoadingActivity в Kotlin, я получаю следующую ошибку:

error: [Dagger/MissingBinding] androidx.fragment.app.Fragment[] cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent extends dagger.android.AndroidInjector<packagepath.Application> {
                ^
      androidx.fragment.app.Fragment[] is injected at
          path.LoadingActivity.fragments
      path.LoadingActivity is injected at
          dagger.android.AndroidInjector.inject(T) [path.AppComponent ? path.contribute.ActivityContributeModule_ContributeLoadingActivity.LoadingActivitySubcomponent]

Может кто-нибудь помочь мне понять, почему это происходит и как я могу это исправить?

...