如何将数据从 activity 传递到 viewpager 内的 Fragment

How to pass data from activity to Fragment which is inside viewpager

我有一个选项卡 activity,其中包含 3 个选项卡。

我的 activity 中有一个 edittextbutton,一个 textview 碎片化。

每当我需要更改片段 textview 时,我只需在 edittext 中添加一些文本,然后单击按钮。该文本应出现在片段中。 在这里我无法使用 setArguments.

Otto 的 EventBus 来拯救。 我正好有这种情况要处理。在我的例子中,我需要在带有锁定滑动的 viewpager 中触发片段更改。所以

Gradle:

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

制作一个将从 activity 传递到片段

的事件
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;
    }
}

从activity

触发事件
  EventBus.getDefault().post(new FragmentChangeEvent(1));

最后让您的片段知道总线和事件

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

如果您使用 ViewPager 来呈现片段,请在您的父级中使用此代码 Activity。

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