在刷卡

时间:2015-11-03 10:47:20

标签: android android-fragments android-viewpager

我想使用viewpager来显示来自一堆对象的信息。 我有一个包含4个片段的viewpager,我希望每当我将viewpager刷到另一个片段时,非可见片段会弹出/从堆栈中查看对象。

我已经尝试了一些东西。我试图使用OnPageChangeListener()监听页面更改,并找到一些方法来更新活动内部的片段内容。我无法做到这一点。

这是我的适配器:

public class PagerAdapter_Browse extends FragmentPagerAdapter {

FragmentManager mManager;

public PagerAdapter_Browse(FragmentManager fm) {
    super(fm);
    mManager = fm;
}

@Override
public Fragment getItem(int arg0) {
    switch (arg0) {
        case 0:
            return new FragmentBrowseOne();
        case 1:
            return new FragmentBrowseTwo();
        case 2:
            return new FragmentBrowseThree();
        case 3:
            return new FragmentBrowseFour();
        default:
            break;
    }
    return null;
}


@Override
public int getCount() {
    return 4;
}
}

我的一个片段(所有片段看起来都不一样):

public class FragmentBrowseOne extends Fragment {


ImageView main_img;
View view;

public FragmentBrowseOne(){
    setArguments(new Bundle());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    Bundle bundle = getArguments();

    BitmapDrawable profilePic;

    view = inflater.inflate(R.layout.fragment_browse_one, container, false);

    main_img = (ImageView) view.findViewById(R.id.main_img);

    Bitmap temp = bundle.getParcelable("object");
    profilePic = new BitmapDrawable(getResources(), temp);
    main_img.setBackground(profilePic);

    main_img.setScaleType(ImageView.ScaleType.CENTER_CROP);

    return view;
}
}

这是我活动的一部分:

    viewpager = (ViewPager) findViewById(R.id.pager_browser);
    padapter = new PagerAdapter_Browse(getSupportFragmentManager());

    PagerAdapter wrappedAdapter = new InfinitePagerAdapter(padapter);
    viewpager.setAdapter(wrappedAdapter);

    viewpager.setId(R.id.pager);

    viewpager.setOffscreenPageLimit(1);

    viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        public void onPageScrollStateChanged(int state) {

        }

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

        }

        public void onPageSelected(int position) {
            FragmentBrowseOne fragment = new FragmentBrowseOne();

            Bitmap pic = BitmapFactory.decodeResource(getResources(), R.mipmap.samplegirl4);
            fragment.getArguments().putParcelable("object", pic);
        }
    });

1 个答案:

答案 0 :(得分:1)

使用SetArguments并将其传递给每个片段的bundle。参数必须包含进行所需更改的新对象。 使用构造函数

public FragmentNumber(){
        setArguments(new Bundle());
}

使用以下方法

返回片段
FragmentNumber fragment = new FragmentNumber();
  fragment.getArguments().putSerializable("object", newobject);

每当页面改变时,这将刷新片段内的数据。