Ошибка @Inject: навигатор свойств lateinit не был инициализирован - PullRequest
0 голосов
/ 17 июня 2020

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

kotlin .UninitializedPropertyAccessException: навигатор свойств lateinit не был инициализирован

My активность:

class HomeActivity : AppCompatActivity(), Injectable {

    @Inject
    lateinit var navigator: Navigator

    private lateinit var binding: HomeActivityBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = HomeActivityBinding.inflate(layoutInflater)
        val view = binding.root
        navigator.initWith(binding.homeNavigation, supportFragmentManager)
        setContentView(view)
    }
}

Мой модуль навигации:

@Module
internal abstract class NavigationModule {

    @[Binds Reusable]
    abstract fun bindNav(appNav: AppNav): Navigator
}

Компонент приложения:

@Singleton
@Component(
    modules = [
        AndroidInjectionModule::class,
        ContextModule::class,
        PresentationModule::class,
        NavigationModule::class,
        ActivityModule::class
    ]
)
interface ApplicationComponent {
    @Component.Builder
    interface Builder {

        @BindsInstance
        fun application(application: Application): Builder

        fun build(): ApplicationComponent
    }

    fun inject(myApplication: MyApplication)
}

Мой класс навигации:

class AppNav @Inject constructor() :
    Navigator {

        override fun initWith(
        navView: NavigationView,
        fragmentManager: FragmentManager
    ) {
        this.navView = navView
        this.navView.setNavigationItemSelectedListener { menuItem ->
            navigationItemSelected(menuItem)
        }
    }
}

Как я могу ввести эту навигацию и не получить эту ошибку?

...