繁体   English   中英

从活动发送数据到片段

[英]Send data to fragment from Activity

我在“ 活动”中包含“ 查看寻呼机” 因此,我还有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并在用户滚动到选定屏幕时检测到该问题,但是问题是如何将数据发送到该Fragment并显示呢?

您可以使用事件总线:

https://github.com/greenrobot/EventBus

易于设置和使用。

如何使用示例和代码片段:

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

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

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

在您的课程中,它将是这样的:

公共片段StageOneFragment {

公共接口itf {

}

...}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM