首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在片段链之间传递数据标准方法

在片段链之间传递数据标准方法
EN

Stack Overflow用户
提问于 2015-03-21 05:10:48
回答 3查看 79关注 0票数 1

我是android的新手,我想知道什么是编写干净代码的最好方法。

我有下面的例子:

代码语言:javascript
复制
ActivityA ---> FragmentA (main UI window the user sees)  

然后根据用户的操作

代码语言:javascript
复制
FragmentA --->starts---> ActivityB-->FragmentB (the next window the user sees and hides previous one)  

然后在用户点击时:

代码语言:javascript
复制
FragmentB---> starts ---> ActivityC-->FragmentC (the next window the user see that hides the rest)  

因此,在最后一步中,用户会看到FramentC的布局。

FragmentC中,为了正确地填充布局的小部件,我需要一些在FragmentA中可用的数据。

我现在做的是:

在intent to FragmentB中将数据作为额外内容传递。其中一些实际上是FragmentB需要的,而另一些则不是,它们被传递给FragmentB,因此如果用户实际按下打开FragmentC布局的按钮,它们随后会通过FragmentB (同样是通过意图/额外)传递给FragmentC

问题:

1)它是有效的,但我想知道我向FragmentB数据传递它并不真正需要的额外意图的事实是否是错误的/错误的,并且有更好的/标准的解决方案

2)当在片段之间传递数据时,这些数据是副本还是单个副本被传递?我不清楚这一点。例如,在我的示例中,如果我有一个非常大的对象从FragmentA传递给FragmentB (不需要它),然后FragmentB将它传递给FragmentC (确实需要它),我最终会占用该对象的3x大小吗?

EN

回答 3

Stack Overflow用户

发布于 2015-03-21 05:52:45

1)意图可能是正确的方式。事实上,您需要传递不需要的数据,这听起来像是您的片段中可能有一些非常紧密的耦合,这可能会对以后的灵活性造成不利影响。由于数据(我假设)是相关的,因此将其抽象到一个类中并使该类成为Parcable或Serializable类以减少这种耦合是有意义的。

2)假设你使用parcable/serializable,它们实际上是被复制的。这是因为意图不必转到您的应用程序,因此系统会将您的数据转换为可由第二个应用程序读取的表单。(我不确定它实际使用的是什么格式,但可以将其想象为JSON。对于所有的实际目的,它也可能是)。

票数 1
EN

Stack Overflow用户

发布于 2015-03-21 06:09:01

意图绝对是做到这一点的方法!正如另一个回答的帖子所说,因为数据是复制的,所以您希望在意图中只存储尽可能少的数据。作为一般的个人经验法则,我将我的活动设计为仅在意图中使用2~3个不同的附加值,意图通常存储一个键或ID和状态,接收活动将根据这几个键值打开并初始化所有内容。

票数 0
EN

Stack Overflow用户

发布于 2015-03-21 06:58:02

在您的解决方案中考虑以下内容:

1-在activity之间进行讨论,您需要intent 2-在activity/fragment之间传递大数据:使用在intent中传递的可并行/可序列化捆绑包:http://blog.denevell.org/android-parcelable.html

3-要将数据从片段传递到活动,您需要一个通信器接口:http://developer.android.com/training/basics/fragments/communicating.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29175861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档