【发布时间】:2013-04-30 15:01:55
【问题描述】:
我正在尝试找出在不违反“empty constructor”规则的情况下将对象传递给Fragment 或DialogFragment 的正确方法。
例如,我创建了一个自定义视图,并为每个我实例化的视图关联一个 DiaglogFragment。此 DialogFragment 将用于显示控件,用户可以使用这些控件更改与其关联的自定义 View 的某些方面。因为 View 是一个我知道我不能使用 setArguments() 的对象。
我可以实现我的 DialogFragment 的 newInstance(View) 方法,即工厂模式,但是如果我的 Fragment 被系统保存然后在以后恢复会发生什么?据我所知,不会有对 View 对象的引用?
有人能告诉我我是否以错误的方式使用 Fragment,或者是否有办法实现将对象传递给 Fragment,这也将处理系统在以后重建它。
【问题讨论】:
-
向你的片段添加一个setter,然后在
new Fragment()之后调用那个setter?但是您不想设置视图。您想告诉片段它需要显示什么,并且它应该能够自己提出视图。如果活动正在做这项工作,那么这可能意味着您没有正确拆分片段和活动。 -
片段不会显示视图,它只是与其密切相关。然而 Fragment 需要将数据传回给 View(比如选择了哪个 Radio 按钮)
-
正确的做法是创建一个接口,让活动实现并且片段可以调用方法。基本上,活动应该协调活动中片段和其他视图之间的任何交互。
-
是的,你让我意识到我正在以不应该的方式使用 Fragments。我能做的是传入视图的 id 以及包含该视图的片段。需要时,我的 DialogFragment 可以回调包含 Activity 以传递数据。
标签: android android-fragments fragment android-dialogfragment