【问题标题】:How to pass data from activity to Fragment which is inside viewpager如何将数据从活动传递到视图页面内的片段
【发布时间】:2018-03-11 19:44:05
【问题描述】:
我有一个包含 3 个选项卡的选项卡活动。
我的活动中有一个 edittext 和 button,片段中有一个 textview。
每当我需要更改片段 textview 时,我只需在 edittext 中添加一些文本,然后单击按钮。该文本应出现在片段中。
在这里我无法使用 setArguments。
【问题讨论】:
标签:
android
interface
android-viewpager
fragment
android-tabactivity
【解决方案1】:
如果您使用 ViewPager 呈现片段,请在您的父 Activity 中使用此代码。
if(viewPager.getCurrentItem() == 1) //First fragment
{
FragmentOne frag1 = (FragmentOne)viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
frag1.textview.setText(yourText);
}
【解决方案2】:
Otto 的 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.
}
}