如何让 DialogFragment 调用另一个 Fragment 中的方法

How to make DialogFragment call a method inside another Fragment

我有一个选项卡 activity,它像往常一样显示 viewpager 的片段。 此片段有一个列表。

用户的一个操作显示了一个对话框片段,让用户在此列表中插入一个新项目。

我显示带有编辑文本的对话框片段以供用户创建新项目。

问题是:如何将此项目插入 viewpager 的片段列表?

我可以从任何片段调用 getActivity() 来访问 activity,但是如何访问显示在对话框片段后面的另一个片段?

提前致谢。

听起来您想从对话片段中获得结果(用户在对话片段编辑文本中插入的内容)并在调用 dialogfragment 的片段中使用它(作为新项目添加到列表中)——在这种情况下,selected answer here solves this problem - also I think this Gist 是一个很好的参考资源。 在你的情况下,我也认为像他们在这个要点中所做的那样实现某种自定义 listener/callback 是一个好主意。希望这有帮助。

包含列表项的片段 - FragmentA 对话框 - NewItemDialogFragment

您缺少的方法是 setTargetFragment()。在构建 NewItemDialogFragment 时,调用此方法将 FragmentA 作为对话的目标片段传递。 稍后,您可以通过在 NewItemDialogFragment 中调用 getTargetFragment() 来访问 FragmentA 实例并将其转换为 FragmentA 并添加新创建的项目。

或者,您可以在 FragmentANewItemDialogFragment

之间创建合约接口

您可以为此使用事件总线。

http://square.github.io/otto/

这是一个用法示例:

Bus bus = new Bus();

bus.post(new AnswerAvailableEvent(42));

@Subscribe public void answerAvailable(AnswerAvailableEvent event) {
    // TODO: React to the event somehow!
}

bus.register(this); // In order to receive events, a class instance needs to register with the bus.