【发布时间】:2017-11-06 10:16:50
【问题描述】:
我想在父母和孩子fragment之间进行交流。我已经阅读了很多关于 SO 的帖子,但似乎没有一篇对我有用。
我有 3 个 Fragments FragmentA、FragmentB 和 FragmentC。
FragmentA 是 FragmentB 的父 fragment,FragmentB 是 FragmentC 的父 Fragment。
FragmentA 具有带有 TextWatcher 的 EditText 和带有标签的 viewpager。 FragmentB 有另一个带有标签的Viewpager。(所以基本上我使用的是不推荐的嵌套标签,但我真的需要使用这种场景)。
FragmentC 具有 recyclerView,然后根据选定的选项卡显示产品列表。这对我来说很好。
现在,我想在FragmentC 中添加产品搜索功能(搜索在webservice 中执行,产品列表的Web 服务从FragmentC 调用)。
为了实现这个我到目前为止所做的是, FragmentA 将根据 Web 响应设置 viewpager,这是在 FragmentA 中设置 viewpager 的方法。(代码指的是我如何获取 Fragment 的实例)
private void setupViewPager(ViewPager viewPager, RetailCategoryListArr retailCategoryListArr) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
for (int i = 0; i < retailCategoryListArr.getData().size(); i++) {
RetailerCategoryArr retailerCategoryArr = retailCategoryListArr.getData().get(i);
FragmentB FragB= FragmentB.newInstance(retailerCategoryArr, retailerArr.getUrlIdentifier());
adapter.addFragment(FragB, retailerCategoryArr.getName());
}
viewPager.setAdapter(adapter);
tabs.setupWithViewPager(viewPager);
}
FragmentB 有另一个 ViewPager,然后像这样实现。
private void setUpViewPager(ViewPager viewpager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
for (int i = 0; i < retailerCategoryArr.getChild().size(); i++) {
RetailerCategoryArr.RetailerSubCategoryArr retailerSubCategoryArr = retailerCategoryArr.getChild().get(i);
FragmentC FragC = FragmentC.newInstance(retailerSubCategoryArr.getId(), retailer);
adapter.addFragment(FragC, retailerSubCategoryArr.getName());
}
viewpager.setAdapter(adapter);
tabs.setupWithViewPager(viewpager);
}
那么,问题是我如何在FragmentC 中收听Edittext 的FragmentA 的textchange?
如果这可以通过接口实现,那么如何实现?
【问题讨论】:
-
@Kuffs 感谢您的回复。但是我已经阅读了这篇文章,我真的不明白如何在我的场景中实现这一点。能否请您简短地写下您的答案。
-
如果您在遵循记录的片段通信方式时遇到问题,那么您可能应该编辑您的问题以准确解释您遇到的问题以及遇到问题的原因。没有人愿意为您复制文档。
标签: java android android-fragments interface