我做了一个简单的学习匕首的项目。该应用程序正在从互联网上获取属性列表(度假租赁),并将其显示在RecyclerView列表上。我使用Dagger 2注入了所有依赖项,但列表的适配器除外。适配器是相当标准的,它接受属性列表并填充视图:
public class PropertyListAdapter extends RecyclerView.Adapter<PropertyListAdapter.ViewHolder> {
private List<Property> mPropertyList;
@Inject
public Property
有一个通用的片段
public class MyFragment<TYPE> extends Fragment {
@Inject
SomeClass class;
public MyFragment(){}
}
}
我无法将此片段添加到片段绑定模块,因为Dagger抱怨它是原始类型。
如何在绑定模块中提到类型类?
我的绑定模块现在看起来是这样的:
@Module
public abstract class BindingModule {
@ContributesAndroidInjector(modules = MyFragmentModule.class)
我刚刚开始学习如何使用Dagger,我已经将我的Backend连接类转换为自动注入。
该类处理重定向并执行网络请求。它过去有静态的方法,但现在它是一个对象,例如:
Backend.fetchPost(context, 42); // old way
mBackend.fetchPost(42); // mBackend is an injected field
上下文用于检索AccountManager,它为后端服务器提供OAuth令牌。现在这是自动注入。
这在活动和片段中运行得很好,但我不知道如何注入我的SyncAdapter类。
实际上,它是一个我无法控制的框架对象,而且AndroidIn
在将代码从Dagger 2移植到Android Dagger 2.11时,我不知道如何设置一些东西。在Dagger 2中,设置是这样的: public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
this.initializeInjector();
}
private void initializeInjector() {
//this class should be auto-g
我正在为DI使用dagger2,并为单个活动进行开发。所以我在启动主活动时注入了一个片段,这个片段也注入了这个视图模型。但是当我在匕首碎片中注入一个视图模型时,就出现了这个问题。如果我不使用constuctor @Inject in dagger片段,ViewModel可以正常工作,但不能在MainActivity上注入。如果我使用constuctor @Inject in dagger片段,ViewModel将无法工作,并得到如下错误
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExe
我看过几篇不同的文章,它们似乎提出了在Dagger 2中进行自定义范围划分的两种不同方法:
():
- Uses unique custom scopes for each fragment, e.g. `@Hello1Scope` and `@Hello2Scope` for `Hello1Fragment` and `Hello2Fragment` respectively
- Uses a single custom scope for all fragments, e.g. `@PerFragment`.
据我所知,就像在方法2中一样,应该可以定义一
我想做一个简单的项目与一个主要活动和多个片段。在这里,我在一个活动中有两个片段,我想将presenter注入到登录片段中,但它不起作用。我的错误在哪里?
MainApplication.java
public class MainApplication extends DaggerApplication{
private static ApplicationComponent component;
@Override
public void onCreate() {
super.onCreate();
Utils.init(this);
}
public static Ap
我正在与MVP和Dagger 2 DI合作。我在一些活动中重用了一个片段。我为演示者提供了一个接口类型,作为片段的一个属性,比如MVPPresenter。根据所使用的片段的活动,我需要向其中注入不同的演示程序(每个演示者都是MVPPresenter的实现)。因此,我需要一种方法将MVPPresenter的每个实现注入到我需要的片段中。
目前,我有一个糟糕的解决方案,这是有效的,但它是完全错误的,并创建不必要的对象,从来没有使用。以下是代码:
public class MyFragment {
...
@Inject
public void setPresenter(@NonNull Pro
我正在尝试在Java代码(不是Android)中为有两个或更多实现的接口创建一个Dagger。我能够使用使用javax库的CDI成功地做到这一点,但这一次我想根据我的项目需要使用Dagger。在编译过程中,我无法调用正确的实现或事件解析依赖项。我收到多个绑定或缺少绑定的错误。 我是Dagger2的新手,正在尝试弄清楚这一点。 所以我首先开始创建一个接口: public interface Engine {
public startEngine();
} Engine有两个实现,分别是汽油和柴油 public class PetrolEngine implements Engine
我刚接触dagger。我创建了一个非常简单的单元测试来尝试理解我应该如何使用dagger。不幸的是,它失败了。我可能还不了解dagger的一些基本原理。
public class A {
@Inject
public B b;
public B getB() {
return b;
}
}
public class B {
}
@Module(injects = { A.class, B.class })
public class DaggerModule {
@Provides
public A provideA() {
如何使用dagger2对循环依赖进行建模?假设我们只有两个类。第一次注入是通过构造函数,第二次是通过方法,如下例所示: class A{
private B b;
@Inject
public A(B b)
{
this.b = b;
}
}
class B{
private A a;
@Inject
public B() { }
@Inject
public void injectA(A a)
{
this.a = a;
}
}