嘿StackOverFlow社区!我真的需要帮助.. :(
我现在搜索了2到3个小时,却没有找到任何相关且简单的内容。
我解释一下上下文:
我有一个活动A1。该活动包含3个片段F1,F2,F3。它使用ViewPager,因此实际上可以通过选择一个选项卡或通过轻扫屏幕来选择3个片段,这是可行的。
我现在想做的是:
由于某些原因,我将Web服务称为活动中的数据。数据取决于活动A1从原始调用活动A0(这是一个group_id)获取的意图。因此,我想将A1中从Web服务获得的数据发送到我的片段F1,F2和F3。
您是否有解决方案或如何将数据传递到ViewPager中的片段的说明?
非常感谢!
我的活动A1有基本代码:
public class ShowGroupActivity extends FragmentActivity implements
ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Infos", "Parcours", "Mur" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_show_group);
// Initilization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
这是一个片段示例:F1(我想在其中显示A1给出的一些数据)。
public class GroupInfoFragment extends Fragment {
public GroupInfoFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_group_info, container, false);
return v;
}
}
最佳答案
最简单,最快的方法是使用EventBus。
只需在活动中的onResponse方法中发布事件,该片段将处理其余事件。
活动-
创建一个NetworkResponceEvent类
OnResponse称为:将新的NetworkResponceEvent发布到事件总线。
分段-
注册简历
取消注册暂停
创建方法onEvent(NetworkResponceEvent e)-处理所有
在这里更新。