Android MVP中一个Activity中的多个片段

3
我正在使用Android MVP架构,并遵循Google MVP Architecture
当Activity有多个fragment时,我遇到了问题,在我的情况下,activity有2个选项卡。我不明白,我应该为每个Fragment创建两个Presenter,还是应该为此创建一个Presenter?现在View也是同样的情况。
即使我在google-sample github repository上没有找到任何解决方案。
有人可以建议或向我展示符合我上述要求的实际代码吗?

如果这两个片段是相同的,那么您可以使用相同的视图和Presenter。如果片段不同,则最好使用不同的视图和Presenter。 - Shalauddin Ahamad Shuza
谢谢@ShalauddinAhamadShuza,我在这方面还有一个问题,活动与片段如何交互,需要创建单独的回调接口。如果Presenter可以做到这一点会更好,就像Google在单个片段示例中所做的那样。 - Ankit Saini
这取决于您的项目需求和使用情况。 - Shalauddin Ahamad Shuza
2个回答

0

我通常会为活动中的不同片段创建不同的展示器/视图,除非它们共享某些特定百分比的相同方法。但为了使事情更加清晰,我认为单独创建这些东西会更好。

1- 您必须在片段的 onCreate() 方法中初始化您的展示器。为此,我总是有一个负责注入的依赖注册类。

 public void inject(ReportingHistoryDetailsFragment fragment, ReportingHistoryResponse.TaskBean taskBean) {
        ReportingHistoryDetailsPresenter presenter = new ReportingHistoryDetailsPresenter(modelLayer,fragment,taskBean);
        fragment.configureWith(presenter);
    }

2- 在我的片段中,我调用

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        DependencyRegistry.shared.inject(this, taskBean);

    }

3- 我的基础视图接口有

public interface BaseView <T> {

    void configureWith(T presenter);

}

如果您有多个由一个活动管理的片段,则每个片段都实现您的View接口,并且具有实现您的Presenter接口的相应Presenter。
希望这可以帮到您。

0
如果这两个片段相同,那么您可以使用相同的视图和Presenter。如果片段不同,则最好使用不同的视图和Presenter。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接