我想知道是否可以像show_id
一样获得DialogFragment?
我会解释。我使用对话框片段从用户那里获取一些信息,然后将信息设置为Expandable ListView的子项数据。
然后,我创建了一个按钮,该按钮允许用户编辑子数据。我想重新打开相同的DialogFragment并在EditText字段中设置旧数据。 这是我的代码:
getFragmentByTag
问题是,我创建了一个新的DialogFragment,这意味着我不会编辑数据,而是添加另一个子代。
有什么想法吗?
答案 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
发送值回到对话框进行编辑,所以我在那里没问题吗?