从Activity发送数据到片段

时间:2014-12-08 22:06:17

标签: android android-fragments

我在该活动中使用查看寻呼机进行主要活动。所以,我还有 FragmentStatePager 适配器来处理ViewPager中显示的片段

无论如何,如你所知 ViewPager 加载内存中的上一个,当前和下一个片段以及这个问题,因为我想根据用户交互从当前片段更改下一个片段中的内容值目前的片段。

public class StageOneActivity extends FragmentActivity 

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    setContentView(R.layout.activity_stage_one);

    //ViewPager for Introduction
    mStageOnePager = (ViewPager) findViewById(R.id.vp_stage_one);
    mStageOnePager.setAdapter(new IntroFragmentPagerAdapter(getSupportFragmentManager()));
    mStageOnePager.setOffscreenPageLimit(1);
    //mStageOnePager.setCurrentItem(8);
}

 private class IntroFragmentPagerAdapter extends FragmentStatePagerAdapter {

    public IntroFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch(pos) {

            case 0:
                return StageOneFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_01);
            case 1:
                return StageOneFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_02);
            case 2:
                return TitleSpinnerFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_03, R.drawable.bkg_page_1_50);
            case 3:
                return CurrencySpinnerFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_03, R.drawable.pack_of_20);
            case 4:
                return SimpleSpinnerFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_05, R.drawable.bkg_page_1_50);
            case 5:
                return MoneySpentFragment.newInstance(getResources().getColor(R.color.green), R.drawable.money_spent_1, R.drawable.money_spent_2, "0");
            case 6:
                return StageOneFragment.newInstance(getResources().getColor(R.color.green), R.drawable.stage1_07);

如何将数据发送到已加载的片段并在ViewPager中添加内容?

我决定尝试使用 ViewPager.setOnPageChangeListener 并在用户滚动到所选屏幕时检测到,但问题是如何将该数据发送到该片段并显示它?

2 个答案:

答案 0 :(得分:1)

您可以使用eventbus:

https://github.com/greenrobot/EventBus

易于设置和使用。

HOWTO包含示例和代码段:

https://github.com/greenrobot/EventBus/blob/master/HOWTO.md

答案 1 :(得分:1)

您需要在片段中定义一个接口,并在Activity.Google文档中实现它:

http://developer.android.com/training/basics/fragments/communicating.html

在你的课堂上,它是这样的:

public Fragment StageOneFragment {

public interface itf {

}

... }

公共类StageOneActivity扩展FragmentActivity实现StageOneFragment.itf { ... }

希望它有所帮助,你应该能够以这种方式实现接口。