相关疑难解决方法(0)

如何修复Dagger 2错误'...无法提供[...]'?

这是一个典型问题,因为这是Dagger 2的常见错误.

如果您的问题被标记为重复,请仔细阅读本文,并确保了解此错误的含义及其发生的原因.如果你一定要包括这个职位不工作在那里如何您提供提到的类,并包括完整的错误消息,在最后的一个你的问题.

我尝试使用Dagger 2的依赖项,但是当我尝试编译项目时收到以下错误:

错误: com.example.如果没有@Inject构造函数或@ Provide -annotated方法,则无法提供MyDependency.

com.示例.MyDependency
com.example.MyComponent.myDependency()中提供

这是什么意思,我该如何解决?

我有一个组件,并试图提供依赖.我的基本设置如下:

// this is the dependency I try to use
class MyDependency {}

@Component
interface MyComponent {
    // I want to make it accessible to be used with my component
    MyDependency myDependency();
}
Run Code Online (Sandbox Code Playgroud)

java dagger-2

15
推荐指数
1
解决办法
4729
查看次数

Dagger 2.11 - 组件中存在具有匹配键的绑定

我有一个小场景,我有以下结构,我试图在baseActivity Fragment中注入片段管理器,但由于某种原因,我运气不好:(

@Singleton
@Component(modules = { AppModule.class,
        ActivityModule.class,
        AndroidSupportInjectionModule.class })
public interface AppComponent extends AndroidInjector<App> {

    @Override
    void inject(App application);

    @Component.Builder interface Builder {

        @BindsInstance
        AppComponent.Builder application(App application);

        AppComponent build();
    }
}
Run Code Online (Sandbox Code Playgroud)

ActivityModule.class

@PerActivity
@ContributesAndroidInjector(modules = BaseActivityModule.class)
abstract BaseActivity baseActivity();
Run Code Online (Sandbox Code Playgroud)

BaseActivityModule.class

static final String ACTIVITY_FRAGMENT_MANAGER = "ACTIVITY_FRAGMENT_MANAGER";

@PerActivity
@Named(ACTIVITY_FRAGMENT_MANAGER)
@Provides
static FragmentManager activityFragmentManager(BaseActivity activity) {
    return activity.getSupportFragmentManager();
}
Run Code Online (Sandbox Code Playgroud)

BaseAcitivity.class

public abstract class BaseActivity extends DaggerAppCompatActivity {

    @Named(ACTIVITY_FRAGMENT_MANAGER)
    @Inject
    FragmentManager fragmentManager;
}
Run Code Online (Sandbox Code Playgroud)

所以即使我在BaseActivityModule.class中提供我的片段管理器,dagger也会抛出以下错误.我甚至尝试使用Activity而不是BaseActivity作为BaseActivityModule中的输入参数.即使这样,我也会遇到同样的问题.不确定到底是什么搞砸了.所以任何帮助都表示赞赏.提前致谢 :)

Error:(17, 8) error: [dagger.android.AndroidInjector.inject(T)] @javax.inject.Named("ACTIVITY_FRAGMENT_MANAGER") android.support.v4.app.FragmentManager cannot …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection dagger dagger-2

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

标签 统计

dagger-2 ×2

android ×1

dagger ×1

dependency-injection ×1

java ×1