使用片段选项卡将模型视图Presenter模式调整为Android

时间:2012-07-03 02:11:48

标签: android views android-activity mvp fragment

我正在将应用程序从Windows Mobile移植到android,我遇到了一些问题。现有的应用程序使用MVP模式并具有不同的“presenter”类,这些类将在端口中重用(它是相当广泛的应用程序并且重写它是不可能的,并且C#代码全部被重用使用mono for android )。这些视图实现了一个接口,在android中我通过创建实现适当接口的活动,实例化一个演示者并将自己作为参数传递来实现。这一切似乎都适合我们的目的,或直到冰淇淋三明治出来,我试图用碎片实现它。

相当多的活动都使用了标签,为了使用操作栏和其他一些新功能,我试图将带标签的活动转换为带有viewpager的标签片段,这就是我要点击的地方问题。从我所看到的,实现每个选项卡作为片段似乎是首选的方法,但我很困惑,我是如何允许演示者通过活动与片段进行通信。目前,演示者调用活动的接口方法,然后直接访问微调器,文本视图等以获取和设置所需的值。由于这些ui元素中的每一个都在活动中声明,这是微不足道的。如果我将所有这些ui元素移动到片段,但是如果没有在每个活动和片段之间实现一组全新的接口,我似乎无法访问它们。我已经尝试在活动中为片段中的ui元素生成一个引用(通过获取片段根视图,然后在其中找到我想要的视图),但是viewpager并不总是加载片段,所以这不起作用,即使它已经加载它们,布局也不会膨胀,直到活动处于运行状态,所以我总是得到返回的空值。

我知道这是一个奇怪的问题,但是如何让我的演示者类与现在存储在单独片段标签中的ui元素进行交互?我觉得我必须以完全错误的方式解决这个问题,但我只是看不出应该怎么做,所以如果有人能提出一些关于如何做到这一点的建议那就太棒了。

1 个答案:

答案 0 :(得分:1)

如何为FragmentAcivity中的所有片段创建单个演示者,然后让这个演示者为每个片段(也称为Tab)实现一个接口。然后从您的FragmentActivity实例中实例化此演示者,演示者将从该实例中获取所有片段的引用。