我想将一个对象传递给片段
当对象不应该或不能在片段中重新创建时(例如LruCache
)。
是否可以不使用static
变量?
因为传递变量可能并不总是相同的对象
编辑:
为了清楚起见,我不希望在重新创建activity
时对象为空
答案 0 :(得分:1)
要将对象传递给片段,您应该使用界面查看this link。
您也可以通过构造函数和getter以及setter传递对象,但是如果app resume对象可能为null,则会导致应用程序恢复NullPointerException
。
<强> 被修改 强>
如果您正在使用LruCache并希望在片段中共享其数据。我建议你创建一个没有onCreateView()方法的片段,意味着它将是不可见的片段。在fragment中实现LruCache对象,并使用getter和setter从LruCache获取和设置所需的对象。
与简单类相比,片段具有可重用性的特征。您可以通过其标记找到一个片段。
例如:添加片段 -
activity.getFragmentManager().beginTransaction().add(fragment, TAG).commitAllowingStateLoss();
并获得一个片段 -
activity.getFragmentManager().findFragmentByTag(TAG);
与普通类相比,Fragment类仅在设备处于内存类型时才从内存中删除。每当片段为空时,您将不得不重新初始化它。
要详细了解其实施细节,请访问this link