如何更改Fragment for View寻呼机中的数据

时间:2013-12-09 14:59:56

标签: android android-fragments android-viewpager

我正在使用只有一个片段的视图寻呼机。 我正在这样做,因为页面的基本布局将保持不变,只有一些细节,如文本视图和图像会改变,所以我重新使用相同的片段 视图寻呼机中的页面。

问题是我在何处以及如何将信息传递给我当前所在的片段(例如:第3页)。一旦片段具有此信息,它就能够调整其视图/布局并显示以下信息。

有人可以帮忙吗?

感谢。

2 个答案:

答案 0 :(得分:2)

当您使用以下方式动态地将片段添加到viewpager中时:

 class ParentPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {

    private ArrayList<Fragment> fragments;

    public ParentPagerAdapter(FragmentManager fm,
            ArrayList<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {

        return this.fragments.get(position);
    }

    @Override
    public int getCount() {

        return fragments.size();
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int position) {
        // TODO Auto-generated method stub
        ((MYFragment)this.fragments.get(position)).updateLayout();
    }

}

将适配器的实例作为ViewPager的OnPageChangeListener()附加。 像这样mPager.setOnPageChangeListener(myParentPagerAdapter);

答案 1 :(得分:0)

在创建片段后保留片段的实例或使用

MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);

通过其ID获取片段

mPager.setOnPageChangeListener(new OnPageChangeListener(){

        @Override
        public void onPageScrollStateChanged(int state) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int currentPage) {
            MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);
            myFrag.updateLayout(currentPage);
        }

    });