Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匕首&x2B;MVP-模型中的演示者问题_Java_Android_Dagger 2 - Fatal编程技术网

Java 匕首&x2B;MVP-模型中的演示者问题

Java 匕首&x2B;MVP-模型中的演示者问题,java,android,dagger-2,Java,Android,Dagger 2,我在匕首依赖循环中遇到了问题,尽管找了几个小时,我还是找不到解决方案。我想这是我对建筑的看法。有什么不对劲吗?我用的是匕首2.11 遵循代码 Inicio.java public class Inicio extends BaseFragment implements InicioMvpView { @Inject InicioMvpPresenter inicioPresenter; @Inject MainMvpPresenter<MainMvpView> mainPrese

我在匕首依赖循环中遇到了问题,尽管找了几个小时,我还是找不到解决方案。我想这是我对建筑的看法。有什么不对劲吗?我用的是匕首2.11

遵循代码

Inicio.java

public class Inicio extends BaseFragment implements InicioMvpView {

@Inject
InicioMvpPresenter inicioPresenter;

@Inject
MainMvpPresenter<MainMvpView> mainPresenter;
//...
InicioModule.java

@Module
public class InicioModule {

    @Provides
    InicioMvpView provideInicioView(Inicio inicioFragment){
        return inicioFragment;
    }

    @Provides
    InicioMvpPresenter provideInicioPresenter(
            InicioPresenter presenter) {
        return presenter;
    }

    @Provides
    InicioMvpModel provideInicioModel(InicioModel inicioModel) {
        return inicioModel;
    }
}
InicioPresenter.java

public class InicioPresenter implements InicioMvpPresenter{

    @Inject
    InicioMvpModel inicioModel;

    @Inject
    InicioMvpView inicioMvpView;

    @Inject
    public InicioPresenter() {
    }

    @Override
    public void recuperarAgendamentos(Bundle savedInstanceState) {

    //..

    }
}

您的问题是,您试图用Dagger and Dagger解决ciclic依赖关系并不能解决此问题

这可以在您的体系结构中得到纠正。只需将回调传递给模型,而不是将演示者传递给模型

这是:

public class InicioModel implements InicioMvpModel{

@Inject
public InicioModel() {

}

@Override
public void recuperarAgendamentos(Presenter inicioPresenter) {

    //...

      inicioPresenter.atualizarListaAgendamentos(agendamentos);

    }
}
就这样。只需在模型中的方法中将presenter作为参数传递。这使得通信不那么耦合

您还可以查看RxJava,它消除了在方法中传递presenter的需要。链接:

Antonio Leiva还为MVP提供了一个很好的实施方案:
您的问题是,您试图用Dagger and Dagger解决ciclic依赖关系并不能解决此问题

这可以在您的体系结构中得到纠正。只需将回调传递给模型,而不是将演示者传递给模型

这是:

public class InicioModel implements InicioMvpModel{

@Inject
public InicioModel() {

}

@Override
public void recuperarAgendamentos(Presenter inicioPresenter) {

    //...

      inicioPresenter.atualizarListaAgendamentos(agendamentos);

    }
}
就这样。只需在模型中的方法中将presenter作为参数传递。这使得通信不那么耦合

您还可以查看RxJava,它消除了在方法中传递presenter的需要。链接:

Antonio Leiva还为MVP提供了一个很好的实施方案:

您好,为什么要在@inject中注释此方法?你在任何地方调用AndroidJector.inject()吗?嗨,我在调用使片段膨胀的活动。我认为这不起作用。尝试调用片段。另外,尽量不要插入视图,只需将其简化即可。将视图添加到后面。不要在你的属性中使用@inject注入你的演示者,而是注入构造函数库的Leandro。一切都正常,直到我尝试将演示者注入模型,这就是问题所在。我在代码中没有看到这一点。所以,模型有一个Presenter实例,Presenter有一个Model实例,对吗?你们想让Dagger解决这个ciclic问题吗?嗨,你们为什么要注释这个@inject方法?你在任何地方调用AndroidJector.inject()吗?嗨,我在调用使片段膨胀的活动。我认为这不起作用。尝试调用片段。另外,尽量不要插入视图,只需将其简化即可。将视图添加到后面。不要在你的属性中使用@inject注入你的演示者,而是注入构造函数库的Leandro。一切都正常,直到我尝试将演示者注入模型,这就是问题所在。我在代码中没有看到这一点。所以,模型有一个Presenter实例,Presenter有一个Model实例,对吗?你想让Dagger解决这个ciclic问题吗?谢谢Leandro,就是这样。我的注意力不够,也许是因为我是一个匕首初学者。谢谢莱安德罗,就是这样。我的注意力不够,也许是因为我是一个匕首初学者。
public class InicioModel implements InicioMvpModel{

@Inject
public InicioModel() {

}

@Override
public void recuperarAgendamentos(Presenter inicioPresenter) {

    //...

      inicioPresenter.atualizarListaAgendamentos(agendamentos);

    }
}