首页 > 解决方案 > 片段与 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。如果使用侦听器不可能,它会很高兴听到其他选择。

标签: androidandroid-fragmentslistener

解决方案


您的问题的解决方案相当简单。将当前片段存储在 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();
    }
  });

推荐阅读