Сначала убедитесь, что понимает, что означает ошибка . Вы пытаетесь ввести AppCompatActivity
, но Кинжал жалуется, что он не может быть предоставлен . Все идет нормально. Пожалуйста, всегда включайте полную ошибку, как показано в ссылке, чтобы нам было легче видеть, что происходит. В вашем случае это похоже на проблему с ограничением объема.
Вы предоставляете Навигатор через инжектор конструктора как @Singleton
...
@Singleton
class Navigator @Inject constructor(private val activity: AppCompatActivity,
private val fragmentManager: FragmentManager)
И вы предоставляете / связываете AppCompatActivity
из модуля с областью действия @PerActivity
.
@Binds
@PerActivity
abstract fun appCompatActivity(mainActivity: MainActivity): AppCompatActivity
Так что, если у вас нет действительно сумасшедших настроек, @Singleton
не сможет получить доступ к @PerActivity
. Если бы это было возможно, вы бы, по крайней мере, имели бы утечку памяти, так как вы сохранили бы свой экземпляр Activity дольше, чем его время жизни (onCreate -> onDestroy
)
Чтобы решить вашу проблему, вам нужно либо переместить Navigator
в область действия, чтобы она также была @PerActivity
, и поделиться жизненным циклом операций, на которые он ссылается (чтобы он не просочился), либо вы должны удалить зависимость от ваша активность в вашем конструкторе. Если вам действительно нужно, чтобы оно было @Singleton
и указывало на действие, вы можете иметь установщик для текущего действия, но, опять же, следите за утечками.