小编KWa*_*son的帖子

是否可以@Inject成员(通过@Provides提供),包含来自Base Activity的Activity Context

好的.让我试着打破这种情况,因为我认为从标题中可能有点不清楚.在继续之前,我会尽可能地说,我试图将这个应用程序的基本结构基于官方的匕首示例.

基本上我正在尝试做的是能够将一个LocationClient注入我的SplashActivity,以便LocationClient.connect()在应用程序打开后立即建立连接(通过).

现在,显然,LocationClient不能通过任何类型的默认构造函数进行注入(它需要一些非常具体的东西(一个上下文和一些回调).所以,我在我的创建了一个 @Providesfor ActivityModule:

@Provides
@Singleton
LocationClient providesLocationClient(@ForApplication Context context, LocationService service) {
  return new LocationClient(context, service, service);
}
Run Code Online (Sandbox Code Playgroud)

LocationService是我为实现所需的回调而创建的类LocationClient.我也通过@Provides我的提供ActivityModule:

@Provides
@Singleton
LocationService providesLocationService(@ForActivity Context context, Logger logger) {
    return new LocationService(context, logger);
}
Run Code Online (Sandbox Code Playgroud)

我将在最后提供所有相关文件的完整代码,以供参考.

所以,我想@Inject一个LocationClient到我SplashActivity.但是,当我这样做时,我收到以下错误:

No injectable members on com.google.android.gms.location.LocationClient. Do you want to add an injectable constructor? required by class m.myapp.android.storemode.presentation.activity.SplashActivity
Run Code Online (Sandbox Code Playgroud)

我发现只有两种方法可以避免这种错误,也没有达到我的需要.我也可以

  1. 将注射移动LocationClient …

android dagger

5
推荐指数
1
解决办法
1133
查看次数

标签 统计

android ×1

dagger ×1