我仍然有点混淆片段中的内容以及放入活动的内容。
一般情况下,我有一个带导航抽屉的应用程序,里面有一个项目,比如笔记(创建了几乎空白的页面,我可以在那里放笔记一天)和清单(这只是打开一个列表,我可以添加一个删除项目)
什么是活动,什么是片段。目前,我的NavDrawer中的每个按钮都会在片段上打开一个活动,并实现片段中定义的接口,用于处理所有按钮点击。
因此,您可以在点击时实际看到交换到新活动,而不仅仅是更改片段。
我的问题是如何处理这个问题。
就像现在一样。 NavDrawer中的每个项目都链接到一个活动,该活动从片段实现界面以处理按钮点击等。
主要活动从片段实现所有不同的接口(事件),只切换片段。 对于用户来说这应该更顺畅,但我觉得man活动对于所有不同的片段只有很多功能。
事件(例如按钮点击)在片段本身中处理,主要活动只是切换片段。这对于用户来说应该是顺利的,并且不会创建如此大的主要活动。这只是困扰我一点,因为我认为片段应该只定义布局而不是处理动作。 (来自android studio的navdrawer的标准示例也将片段中的点击转发到其活动)
目前唯一的一刻,我在没有活动的情况下交换片段是否有人会去详细页面。就像点击一个bucketlist项目来获取更多细节一样。
也许有人可以解释使用什么或者是否有不同的时间来使用这些方法。
问题的简短版本,例如:
WhatsApp(因为我是新用户而无法链接):
实施标签“呼叫”,“聊天”,“联系人”
的方法是什么这就是我用谷歌搜索得到的:
这是我发现建议的方法3: http://weimenglee.blogspot.de/2013/08/android-tip-handling-events-in-fragment.html
这是来自谷歌开发者。他们创建了一个额外的类来处理事件: https://developer.android.com/training/implementing-navigation/nav-drawer.html
答案 0 :(得分:0)
来自Fragments | Android Developer:
Fragment表示Activity中的行为或用户界面的一部分。
因此片段处理按钮点击完全合适,如上面的选项3所示。
这是我使用的规则:如果片段可以处理整个行为,那么它应该。如果片段无法处理整个行为,则调用活动上的方法以通知它事件发生,并让活动通过调用其片段上的方法来“转发”行为。
我最近使用另一个片段中的ViewPager
处理的片段编写了一个特征。对我而言,它有助于将要执行的行动分组并询问“哪个片段/活动应该对......负责?”