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

时间:2016-04-26 19:54:49

标签: android android-fragments android-viewpager android-tabs

我有一个标签式活动,像往常一样通过viewpager显示片段。 这个片段有一个列表。

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

我使用edittexts显示对话片段,以便用户创建新项目。

问题是:如何在浏览器上插入此项目'片段列表?

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

提前致谢。

3 个答案:

答案 0 :(得分:1)

听起来你想从对话片段(用户在dialogfragment edit-texts 上插入的内容)得到结果,并在调用的片段中使用它dialogfragment(将新项目添加到列表中) - 在这种情况下,selected answer here解决了这个问题 - 我认为this Gist是一个很好的参考资源。 在你的情况下,我也认为实现某种自定义监听器/回调就像他们在这个Gist中所做的那样是一个好主意。希望这会有所帮助。

答案 1 :(得分:1)

带有列表项的片段 - FragmentA 对话 - NewItemDialogFragment

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

或者,您可以在FragmentANewItemDialogFragment

之间创建合同界面

答案 2 :(得分:1)

您可以使用事件总线。

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.