匕首2活动不能提供@提供或@产生注释的方法

我是新来的匕首,我试图实现一个从注入正在发生的类inheritance的类。 当我在MainActivity中注入一个组件并从BaseActivityinheritance它时,事情就破灭了。

我的AppComponentClass:

@Singleton @Component(modules = {NetworkModule.class, ApplicationModule.class, AndroidModule.class}) public interface AppComponent { void inject (BaseActivity baseActivity); void inject (MainActivity mainActivity); } } 

我的ActivityModule类:

 @Module public class ActivityModule { private Activity activity; public ActivityModule(Activity activity) { this.activity = activity; } @PerActivity @Provides @ActivityContext public Context provideContext() { return activity; } } 

我的ApplicationModule类:

 @Module public class ApplicationModule { private Application application; public ApplicationModule(Application application) { this.application = application; } @Provides @Singleton @ApplicationContext public Context provideContext() { return this.application; } @Provides @Singleton public FCMTokenHelper provideFCMTokenHelper(Context context, ApiService apiService) { UserRepoImpl userRepo = new UserRepoImpl(apiService); return new FCMTokenHelper(context, context.getClass().getSimpleName(), userRepo); } @Provides @Singleton public UserRepoContract providerUserRepo(ApiService apiService) { return new UserRepoImpl(apiService); } } 

我的两个class(都在kotlin)

 class MainActivity : BaseActivity() { } abstract class BaseActivity : AppCompatActivity(), GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, ActivityCompat.OnRequestPermissionsResultCallback, LocationListener { @Inject lateinit var userRepo: UserRepoContract @Inject internal var tokenHelper: FCMTokenHelper? = null } 

错误(s):

错误:(51,10)错误:.BaseActivity不能提供@提供注释的方法。 在AppComponent.inject(baseActivity)中注入BaseActivity错误:(75,10)错误:无法使用@Inject构造函数或从@提供注释的方法提供MainActivity。 MainActivity被注入到.AppComponent.inject(mainActivity)

使用Dagger 2 ver 2.9 Android Studio 3.0 Kotlin和Java

我的问题在这里:

 @Inject internal var tokenHelper: FCMTokenHelper? = null 

将其更改为:

 @Inject lateinit var tokenHelper: FCMTokenHelper 

解决了这个问题。 在这里看到一个好的解释。