我正在开发一个 android 应用程序,我正在尝试注入(inject)一个在抽象类中类型参数化的字段:BaseListFragment
public abstract class BaseListFragment<E, A extends ArrayAdapter<E>, S> extends BaseFragment
{
@Inject protected S service;
}
但我在编译时遇到以下错误: 错误:找不到符号类 S
这是我的 BaseFragment 代码:
public class BaseFragment extends Fragment
{
@Override public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
((App) getActivity().getApplication()).inject(this);
}
}
这是我的服务模块:
@Module(
complete = false,
library = true
)
public class ServiceModule
{
@Provides @Singleton BucketService provideBucketService(RestAdapter restAdapter)
{
return restAdapter.create(BucketService.class);
}
@Provides @Singleton ProjectService provideProjectService(RestAdapter restAdapter)
{
return restAdapter.create(ProjectService.class);
}
@Provides @Singleton ShotService provideShotService(RestAdapter restAdapter)
{
return restAdapter.create(ShotService.class);
}
@Provides @Singleton TeamService provideTeamService(RestAdapter restAdapter)
{
return restAdapter.create(TeamService.class);
}
@Provides @Singleton UserService provideUserService(RestAdapter restAdapter)
{
return restAdapter.create(UserService.class);
}
}
下面是一个扩展 BaseListFragment 类的例子:
public class ProjectFragment extends BaseEntityFragment<Project, ProjectViewAdapter, ProjectService>
{
}
有没有办法注入(inject)参数化类型?
问候,
最佳答案
从 2.0.1 版开始,Dagger 2 可以 support您所说的注入(inject)类型。看看GenericTest
对于所有各种排列。
关于android - Dagger 无法注入(inject)类型参数字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28079276/