android - 片段与 viewpager 之间的通信
问题描述
假设我有两个片段 A、B、C。Fragment A 包含带有 View Pager 的 Fragment B、C,允许使用选项卡布局在两个 Fragment 之间切换。片段 B、C 是通过使用片段 A 中的数据创建的,因此我可以将片段 A 中的侦听器传递给片段 B 和 C 并在片段 A 中的那些片段中接收事件。但是我想在片段 B、C 中接收发生的事件在片段 A 上(单击 A 的工具栏上的一项)。
我如何将发送事件从片段 A 传递到片段 B、C,其方式类似于从片段 A 传递到片段 B 的侦听器,允许 B 将事件发送到 A。如果使用侦听器不可能,它会很高兴听到其他选择。
解决方案
您的问题的解决方案相当简单。将当前片段存储在 Viewpager 适配器 getItem() 方法的变量中。
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
fragB=new FragB();
return fragB;
case 1:
fragC = new FragC();
return fragC;
}
}
现在,当你想向片段 B 和片段 C 发送数据时,使用这个变量并将数据发送到这个片段(在片段中创建方法来处理事件)。例如发送按钮点击事件。
view1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
fragB.onClick();
fragC.onClick();
}
});
推荐阅读
- r - 在归一化操作之前仅选择现有组合
- ruby-on-rails - 在本地主机上工作但在heroku中出错
- python - 使用 numba 重载时 Python 内核死机
- python - DJANGO - 如何让我的用户连接到他们的日历?
- python - 以非危险方式基于布尔值选择行
- angular - 如何使用 jasmine-karna 对 Angular 中的嵌套函数进行单元测试
- python - 从鼠标悬停元素中提取链接
- java - 休眠 3 - 5 迁移。Org.hibernate.Criteria:使用 CriteriaBuilder 将 createCriteria(字符串关联,字符串别名)更改为标准 JPA
- python - 如何用自己的生成器覆盖 Python 的随机数?
- algorithm - 待命调度算法