修改存在的DialogFragment

时间:2018-10-26 11:36:16

标签: android android-dialogfragment

我想知道是否可以像show_id一样获得DialogFragment?

我会解释。我使用对话框片段从用户那里获取一些信息,然后将信息设置为Expandable ListView的子项数据。

然后,我创建了一个按钮,该按钮允许用户编辑子数据。我想重新打开相同的DialogFragment并在EditText字段中设置旧数据。 这是我的代码:

getFragmentByTag

问题是,我创建了一个新的DialogFragment,这意味着我不会编辑数据,而是添加另一个子代。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据文档,您有两个显示DialogFragment的选项,它们是对话框(“弹出”)或嵌入

  

在对话框或嵌入之间选择

     

如果出现以下情况,仍然可以选择将DialogFragment用作常规片段   想要的。如果您的片段在某些情况下很有用   应该显示为对话框,而其他则显示在较大的UI中。这个   行为通常会根据如何自动为您选择   您正在使用片段,但是可以使用   setShowsDialog(boolean)。

     

ref:https://developer.android.com/reference/android/app/DialogFragment

对话框旨在用作“弹出窗口” *,通常会在解雇后销毁。此选项将要求传递对位于ExapandableListView中的数据/模型/对象(或它的某些子对象,如您所述)的引用。该对象需要公开所有必需的setter / getter,以使其值/状态由DialogFragment进行操作。

如果您确实选择了这种方法,那么为什么不以相同的方式(通过将参考传递给空白对象)获取(运动指标的)初始数据,除非有其他原因需要特殊情况来初始获取数据没有提到?这样,您获取和编辑数据的机制将完全相同。

这里https://medium.com/@hamidgh/sending-objects-to-fragment-naive-question-is-it-sent-by-value-ddaaa19fa42d是一篇通过捆绑/包裹传递对象引用的好文章。

嵌入将允许用户在适当位置编辑数据,从而无需弹出窗口,但这可能需要比可用空间更多的空间,因为数据/字段必须很大足以轻松编辑。

但是,使用现有的东西,有什么原因导致您不能简单地返回已编辑的数据,就像最初输入时一样,您似乎在正确地使用Bundle发送值回到对话框进行编辑,所以我在那里没问题吗?