java - 在 fragment 之间传递对象作为参数

标签 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 对象的引用。

我的问题是,这是否被认为是将对象的字段传递给另一个 Activity 然后该 Activity 通过提供的字段 Extra 检索对象的最佳方法。我们是否应该改为使 Crime 类可序列化并直接将 Crime 对象从一个 fragment/Activity 传递到另一个 fragment/Activity ?

哪种方法更好、更有效?还是无所谓?

如果这是一个幼稚的问题,我很抱歉。

最佳答案

通过序列化,第二个 Activity 检索到的对象将是一个相同但不同的对象。这意味着您对 CrimeFragment 中的对象所做的任何修改都不会反射(reflect)在 CrimeLab ArrayList 中,并且一旦您退出该 fragment 就会丢失。

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

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

关于java - 在 fragment 之间传递对象作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26993759/

相关文章:

java - Android 测试给出 IllegalStateException : No instrumentation registered

java - 无法从 TimerTask 线程捕获异常

java - 如果从数组中复制最终变量,为什么 Java 需要对它进行显式强制转换?

android - 服务器迁移后android版本<6.0 https请求错误

java - jain sip processResponse() 没有被调用

java - HttpURLConnection : What is the right way to read data from a WebService, 逐字符还是逐行?

android - 如何在安卓中唤醒屏幕

android - 高度大于 4096 的 SurfaceView setMeasuredDimension() 崩溃

Android ICS SOAP 方法不起作用?

android - 在 android 中使用 like 和 where 子句进行删除