如何将数据从活动传递到Viewpager内部的片段



我有一个包含 3 个选项卡的选项卡活动。

我的活动中有一个编辑文本和按钮,一个片段中的文本视图

每当我需要更改片段文本视图时,我只需在编辑文本中添加一些文本并单击之后的按钮。该文本应出现在片段中。在这里我无法使用 setArguments

如果您使用 ViewPager 渲染片段,请在父活动中使用此代码。

if(viewPager.getCurrentItem() == 1) //First fragment
{
     FragmentOne frag1 = (FragmentOne)viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
     frag1.textview.setText(yourText);
}

Otto's EventBus 前来救援。我正是有这种情况要处理。就我而言,我需要通过锁定的滑动在查看页中触发片段更改。所以

格拉德尔:

// EventBus
implementation 'org.greenrobot:eventbus:3.0.0'

创建一个将从活动传递到片段

的事件
public class FragmentChangeEvent {
public int fragmentToBeChanged;
 //here you can define variables of your choosing, just make sure you're including them into the constructor of the event.
public FragmentChangeEvent(int fragmentToBeChanged) {
    this.fragmentToBeChanged = fragmentToBeChanged;
    }
}

从活动触发事件

  EventBus.getDefault().post(new FragmentChangeEvent(1));

最后让你的片段知道公共汽车和事件

@Subscribe(threadMode = ThreadMode.MAIN)
public void onChangeFragmentEvent(FragmentChangeEvent event) {
  //do your work here.
   }
}

最新更新