嘿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)-处理所有
在这里更新。

10-08 09:04
查看更多