我想知道是否有任何方法可以获得 DialogFragment 就像getFragmentByTag
?
我来解释一下。我正在使用对话框片段从用户那里获取一些信息,然后将信息设置为可扩展 ListView 的子项数据。
然后我创建了一个按钮,允许用户编辑子数据。我想重新打开同一个 DialogFragment 并在 EditText 字段中设置旧数据。这是我的代码:
NewExerciseChildFragment editExercise = new NewExerciseChildFragment();
Bundle bundle = new Bundle();
bundle.putInt("groupPosition", groupPosition);
bundle.putString("exerciseName", exerciseName);
bundle.putDouble("weight", weight);
bundle.putInt("reps", reps);
bundle.putInt("sets", sets);
editExercise.setArguments(bundle);
editExercise.show(getFragmentManager(), "showEditedExercise");
问题是,我创建了一个新的 DialogFragment,这意味着我不会编辑数据而是添加另一个孩子。
有任何想法吗?
根据文档,您有两个选项可以显示您的DialogFragment
,作为对话框(“弹出”)或嵌入
在对话框或嵌入之间进行选择
如果需要,DialogFragment 仍然可以选择用作普通片段。如果您的片段在某些情况下应显示为对话框,而其他片段应显示为更大的 UI,则这很有用。通常会根据您使用片段的方式自动选择此行为,但可以使用 setShowsDialog(boolean) 自定义。
参考: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
正确地使用了将值发送回对话框进行编辑,所以我看那里没有问题?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句