Moh*_*ANE 4 java android dagger dagger-2
我正在迁移到新的匕首android 2.11
所有设置都基于Google蓝图:MVP-Dagger.但我遇到此错误:
错误:(22,57)错误:@Binds方法必须只有一个参数,其类型可分配给返回类型
在这一行:
@ActivityScoped
@Binds abstract PresenterFactory<MainContract.Presenter> providePresenterFactory(MainPresenter presenter);
Run Code Online (Sandbox Code Playgroud)
主持人:
@ActivityScoped
public class MainPresenter extends BasePresenterImpl<MainContract.View>
implements MainContract.Presenter { public MainPresenter(String s) {..
} ... }
Run Code Online (Sandbox Code Playgroud)
有人知道如何解决这个问题吗?谢谢.
Dav*_*son 12
错误消息解释了所有内容:
@Binds方法必须只有一个参数,其类型可分配给返回类型
您的@Binds方法的参数为MainPresenter.这不能分配给返回类型PresenterFactory<MainContract.Presenter>.换句话说,MainPresenter不是一个实例PresenterFactory<MainContract.Presenter>.
@Binds方法的正确语法如下:
@Binds
abstract Abstraction bindAbstration(Concretion concretion)
Run Code Online (Sandbox Code Playgroud)
在哪里concretion是一个实例Abstraction.
或者,在Kotlin:
@Binds
abstract fun bindAbstraction(concretion: Concretion) : Abstraction
Run Code Online (Sandbox Code Playgroud)
@Binds方法不是魔法.它们绑定一个类型(例如,一个接口)和Dagger已经知道如何提供的那种类型的实现.
更新
您可以使用以下步骤转换@Provides为@Binds:
MainPresenter有一个带有注释的显式构造函数,@Inject并且Dagger 2可以在构造函数中提供依赖项.写:
@Binds
abstract MainContract.Presenter bindPresenter(MainPresenter mainPresenter);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
5028 次 |
| 最近记录: |