2012-07-03 46 views
9

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

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

我知道这是一个奇怪的问题,但我怎么能让我的演示者类与现在存储在单独片段选项卡中的UI元素进行交互?我觉得我必须以完全错误的方式去解决这个问题,但我不知道应该如何去做,所以如果任何人能够提供一些关于如何去做的建议,那将会很棒。

+0

也有同样的困境,在RecyclerView和ViewPager中使用MVP与自定义项目是痛苦的@ss与工作 –

回答

1

如何为您的FragmentAcivity中的所有碎片创建单个演示者,然后让此单个演示者为每个碎片(aka Tab)实现接口。然后从您的FragmentActivity实例中实例化此演示者,演示者将从其中引用所有片段。

相关问题