MVP:管理活动和碎片的最佳实践

时间:2017-07-24 08:40:07

标签: android android-fragments mvp

我有两个Activity Fragments。我决定为每个人提供一个演示者" view"。因此主要活动的1个主持人,第一个片段的1个主持人和第二个片段的1个主持人。

我有一些用例,我不知道代码在哪里。

  • 第一个是使用片段管理器管理片段的位置?我是否必须进行类似" beginTransaction()的调用。添加"在活动中或在他的主持人中?

  • 第二个是,当用户点击活动中的按钮时,我会在当前片段中做一些事情。我是否必须调用活动的演示者来调用片段的方法,或者直接在我称之为片段方法的活动中的onClick方法中?

PS:我不想使用任何lib / framework

1 个答案:

答案 0 :(得分:3)

  

第一个是使用片段管理器管理片段的位置?我   必须在活动中或在中执行“beginTransaction()。add”之类的调用   他的节目主持人?

与Android API相关的所有内容都应位于Activity内。因此,beginTransaction()FragmentManager的一种方法,这是Android API的一部分。 Activity是您的应用和操作系统之间的合同。演示者甚至不应该知道它用于Android应用程序。例如,如果您按下Activity内的按钮,它会像这样:

您在Activity中的内部事件处理程序方法执行此操作: 致电activityPresenter.onButtonClicked(),它会拨打activityView.presentWhatTheButtonClickDid()

  

第二个是,当用户点击活动中的按钮时,我就到了   在当前片段中做一些事情。我必须打电话给   活动的演示者将调用片段的方法   想要,或直接在我称之为活动的onClick方法中   片段的方法?

您可以通过其演示者间接调用Fragment方法。

活动内部的内部事件处理程序方法: 致电activityPresenter.onButtonClicked(),然后拨打电话 fragmentPresenter.onButtonClicked()它会调用 fragmentView.presentResult()

因此,正如您所看到的,Activitiy的演示者需要知道Fragment的演示者。

*您不应在其名称中为您的演示者命名为“activity”或“fragment”以保持抽象。我这只是为了简单起见。

相关问题