Android新手。试图了解设计的技术缺点。
我有一个ItemSelectorView
,其中包含availableItems
个集合以及selectedItem
个属性。后者在运行时与雪佛龙一起显示,让用户知道他们可以更改它。
功能方面,它类似于微调器,除了显示带有选项的弹出窗口,它启动第二个名为ItemSelectorActivity
的活动,它显示{{1}中的所有可用项目。启动它的1}},以及有关每个选项含义的有用信息以及搜索和过滤的能力。
当用户选择一个时,他们的选择将通过ItemSelectorView
的{{1}}覆盖行程返回原始ItemSelectorView
。然后覆盖会确定哪个MainActivity
响应并转发它。
但是,我真的不喜欢onActivityResult
只是为了从ItemSelectorView
获取结果而将自己插入到流程中的方式。另外,如果片段中使用了MainActivity
,那么尝试将信息转发到正确的视图会变得更加复杂。
正因为如此,我改为ItemSelectorActivity
改为ItemSelectorView
,它可以覆盖自己的ItemSelectorView
,而不是它自己的活动,负责用选定的结果更新自己。这意味着它现在基本上是完全独立的。
虽然这看起来非常有效 - 通过此更改,用户只需要将ItemSelectorFragment
放置在布局中的某个位置并设置可用和选定的项目 - 一位资深的Android开发人员在这里说使用像这样的片段是错的,我应该留下一个观点,因为片段的开销。
但回到视图意味着我又要回到onActivityResult
再次参与其中,这使得实际使用起来要复杂得多。
那么使用这样的片段的技术方面是什么?我认为这就是他们存在的原因。如果我应该使用视图,是否有更简单的方法从ItemSelectorFragment
获得结果?
答案 0 :(得分:0)
如果我理解正确,您的观点就是开始一项活动(ItemSelectorView
开始ItemSelectorActivity
)。但是应该在Android中转储视图。它们应该显示,仅此而已。
所以视图永远不应该开始活动。视图可以包含项目列表,但这些项目应该是视图而不是其他内容。通常我们使用Adapter
:在要显示的项目和创建的视图之间的中间人,以在屏幕上表示它们。
你可以通过适当的方式调查MVP。或者可能是MVVM和Android架构,如果你更喜欢它。
要回答你的问题,为你的用例使用一个片段是一个更好的方法,然后一个视图,并没有那么多的开销。