片段将所有导航控件委派给Activity是一个好主意吗?

美洲虎

Android开发人员指南的启发,我正在尝试编写代码,其中所有片段都是独立的(就网络/逻辑而言),而它们执行的任何操作(单击/点击)均应导致启动新的活动/片段,委托给活动(通过回调)。

首先,这似乎是正确的。但是现在,当我的片段中包含多个这样的小部件(需要该片段才能导航到新屏幕)时,看起来就像是一团糟。我要么需要编写多个回调,要么在Activity中为在片段上执行的不同操作做一些切换用例的逻辑。

如果此设计听起来很糟糕,那么在什么情况下实现回调(如指南所建议)将是一个好主意?

常用软件

我不知道您如何实现这些回调。

解决此问题的一种方法是使用合同模式:

  • 该片段定义了一个Contract接口,任何托管活动都必须实现

  • 当片段想要将控制权传递给活动时,它将在该接口上调用一个方法

杰克·沃顿(Jake Wharton)在GitHub gist中具有规范的实现唯一未显示的部分是承载其MyCoolFragment实现MyCoolFragment.Contract接口需求的活动

假定每个片段都有引发事件的不同事件,因此需要其自己的接口。如果您有多个具有共同特征的片段,则可以在单个接口上进行标准化,而不必在Contract各处重复

还有其他方法(例如,建议使用消息总线的要点注释),但是对于简单的fragment-> activity通信,无论在编码还是在运行时实现方面,协定模式都应具有最小的开销。

但是,将工作委派给可能会导致更改另一个片段的活动的一般方法绝对是个好方法。当您处理不同的屏幕设置(电话与平板电脑,单屏与在连接的设备上显示内容)时,它可以更轻松地处理碎片不在同一时间出现在屏幕上(可能由不同的活动托管)的情况。电视等)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Android Studio(和Gradle)将.idea / libraries添加到.gitignore是一个好主意吗?

来自分类Dev

片段将所有导航控件委托给Activity是一个好主意吗?

来自分类Dev

将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

来自分类Dev

我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

来自分类Dev

将jQuery Deferred委派给另一个Deferred

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

提取大量String文字是一个好主意吗?

来自分类Dev

临时扩展Java中的现有对象-这是一个好主意吗?

来自分类Dev

将数组存储为字段值或将数组值存储为记录是一个好主意吗?

来自分类Dev

Javacard安全性设计:所有智能卡都具有相同的公钥和私钥是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

将Any用作Union类型是一个好主意吗?

来自分类Dev

将数据作为键存储在具有空/空值的HashMap中是一个好主意吗?

来自分类Dev

将原始指针及其拥有的shared_ptr一起缓存以提高访问性能是一个好主意吗?

来自分类Dev

使用NTFS压缩是一个好主意吗?

来自分类Dev

将加密的密码密钥存储在另一个表中是一个好主意吗?

来自分类Dev

将两个路由器相互连接是一个好主意吗?

来自分类Dev

对不同的控件使用与事件相同的功能不是一个好主意吗?

来自分类Dev

绑定PasswordBox密码不是一个好主意吗?

来自分类Dev

将所有与数据库相关的方法都放在一个类中是一个好主意吗?

来自分类Dev

将实例传递给__init__。这是一个好主意吗?

来自分类Dev

将安全令牌从一个依赖方委派给另一方

来自分类Dev

我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

来自分类Dev

将jQuery Deferred委派给另一个Deferred

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

别名cd推送-这是一个好主意吗?

来自分类Dev

将“ screen -r”放在我的.bashrc中是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

使用Relay将片段委派给孩子

Related 相关文章

  1. 1

    使用Android Studio(和Gradle)将.idea / libraries添加到.gitignore是一个好主意吗?

  2. 2

    片段将所有导航控件委托给Activity是一个好主意吗?

  3. 3

    将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

  4. 4

    我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

  5. 5

    将jQuery Deferred委派给另一个Deferred

  6. 6

    组合实例VBO是一个好主意吗?

  7. 7

    提取大量String文字是一个好主意吗?

  8. 8

    临时扩展Java中的现有对象-这是一个好主意吗?

  9. 9

    将数组存储为字段值或将数组值存储为记录是一个好主意吗?

  10. 10

    Javacard安全性设计:所有智能卡都具有相同的公钥和私钥是一个好主意吗?

  11. 11

    一个好主意是为此使用复合模式吗?

  12. 12

    将Any用作Union类型是一个好主意吗?

  13. 13

    将数据作为键存储在具有空/空值的HashMap中是一个好主意吗?

  14. 14

    将原始指针及其拥有的shared_ptr一起缓存以提高访问性能是一个好主意吗?

  15. 15

    使用NTFS压缩是一个好主意吗?

  16. 16

    将加密的密码密钥存储在另一个表中是一个好主意吗?

  17. 17

    将两个路由器相互连接是一个好主意吗?

  18. 18

    对不同的控件使用与事件相同的功能不是一个好主意吗?

  19. 19

    绑定PasswordBox密码不是一个好主意吗?

  20. 20

    将所有与数据库相关的方法都放在一个类中是一个好主意吗?

  21. 21

    将实例传递给__init__。这是一个好主意吗?

  22. 22

    将安全令牌从一个依赖方委派给另一方

  23. 23

    我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

  24. 24

    将jQuery Deferred委派给另一个Deferred

  25. 25

    组合实例VBO是一个好主意吗?

  26. 26

    别名cd推送-这是一个好主意吗?

  27. 27

    将“ screen -r”放在我的.bashrc中是一个好主意吗?

  28. 28

    一个好主意是为此使用复合模式吗?

  29. 29

    使用Relay将片段委派给孩子

热门标签

归档