将对象作为片段之间的参数传递

时间:2014-11-18 11:55:12

标签: java android

enter image description here

这是Big Nerd Ranch Guide - Android Programming一书中的对象图。它适用于具有列表详细信息结构的应用程序。

这里CrimeLab类包含CrimeListFragment中显示的对象的ArrayList。单击该ListView中的项目时,该Crime对象的Id字段将传递给CrimeActivity,从而在Crime Fragment中打开该Crime对象的详细信息。

CrimeFragment调用CrimeLab类的getCrime(UUID)方法来获取对该特定Crime对象的引用。

我的问题是,这会被认为是将对象的字段传递给另一个活动然后该活动通过Extra提供的字段检索对象的最佳方法。我们应该改为犯罪类Serializable并直接将Crime对象从一个片段/活动传递给另一个片段/活动吗?

哪种方法会被认为更好,更有效?或者没关系?

如果这是一个天真的问题,我很抱歉。

1 个答案:

答案 0 :(得分:2)

通过序列化,第二个活动检索的对象将是相同但不同的对象。这意味着您对CrimeFragment中对象所做的任何修改都不会反映在CrimeLab ArrayList中,并且一旦退出片段就会丢失。

最佳方法取决于您要对对象做什么以及检索成本。在您的情况下,序列化/反序列化的成本肯定会超过访问ArrayList的成本。

此外,出于性能原因,应优先在Android上使用Serializable实现Parcelable。