我有一个标签式活动,像往常一样通过viewpager显示片段。 这个片段有一个列表。
用户的其中一个操作显示了一个对话框片段,用户可以在此列表中插入新项目。
我使用edittexts显示对话片段,以便用户创建新项目。
问题是:如何在浏览器上插入此项目'片段列表?
从任何片段我可以调用getActivity()来访问活动,但是如何访问在dialogfragment后面显示的另一个片段?
提前致谢。
答案 0 :(得分:1)
听起来你想从对话片段(用户在dialogfragment edit-texts 上插入的内容)得到结果,并在调用的片段中使用它dialogfragment(将新项目添加到列表中) - 在这种情况下,selected answer here解决了这个问题 - 我认为this Gist是一个很好的参考资源。 在你的情况下,我也认为实现某种自定义监听器/回调就像他们在这个Gist中所做的那样是一个好主意。希望这会有所帮助。
答案 1 :(得分:1)
带有列表项的片段 - FragmentA
对话 - NewItemDialogFragment
您遗失的方法是setTargetFragment()。在构建NewItemDialogFragment
时,调用此方法将FragmentA
作为对话框的目标片段传递。
稍后,您可以通过调用FragmentA
中的getTargetFragment()来访问NewItemDialogFragment
实例,然后将其投放到FragmentA
并添加新创建的项目。
或者,您可以在FragmentA
和NewItemDialogFragment
答案 2 :(得分:1)
您可以使用事件总线。
这是一个使用示例:
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.