2 a348639336 a348639336 于 2016.04.24 15:12 提问

viewpager+fragment只显示第一个item 1C

结构是fragment下一个父viewpager+fragment的组合,其中一个viewpager下嵌套了一个竖直方向的viewpager,子viewpager也是+fragment的组合,现在的问题是子viewpager中滑动切换的时候显示的都是同一个页面(第一个页面),滑动事件没有问题,就是滑动到第二个页面的时候显示的还是第一个item,使用的是getchildfragmentmanager,这个是没有问题的,滑动事件也没有问题,实在是头疼,找不出问题,代码贴在下面,请大神求解

10个回答

a348639336
a348639336   2016.04.24 15:17

![图片说明](http://img.ask.csdn.net/upload/201604/24/1461482245_261267.png)图片说明

a348639336
a348639336   2016.04.24 15:18

图片说明

a348639336
a348639336   2016.04.24 15:19

图片说明

a348639336
a348639336   2016.04.24 15:21

图片说明

前三张是同一个图。。。。搞错了

freedom_wings5
freedom_wings5   2016.04.24 15:22

不把完整的代码贴出来?

滑动到第二个页面显示的还是第一个item,可能是你的viewpager的adapter中,放进去的item搞错了,检查一下adapter里面放了什么进去

a348639336
a348639336 要哪一块代码?adapter中放的是fragment的集合上图代码中有,添加了两个fragment作为viewpager的视图
一年多之前 回复
molashaonian
molashaonian   2016.04.24 15:58

因为每一次都调用了onCreateView方法,重新加载了视图

molashaonian
molashaonian 你可以对ViewPager设置滑动监听,看看哪里错了
一年多之前 回复
a348639336
a348639336 应该不是这个问题啊,我父viewpager也是这种使用方式,没有问题,
一年多之前 回复
a348639336
a348639336 那要怎么解决呢
一年多之前 回复
sarazeng
sarazeng   2016.04.24 16:55

viewpager+fragment架构的代码 有很多 比如黑马程序员的智慧北京项目 淘宝里有卖

erichk2008
erichk2008   2016.04.24 17:15

initFragment()方法是在什么地方调用的?代码里没有看到

sinat_21102069
sinat_21102069   2016.04.24 17:19

onCreate()方法有问题吧,直接用给的参数inflater添加布局吧,而且怎么用的是三个参数的这个onCreate啊,代码给的不是很全,我所说的不一定解决问题

a348639336
a348639336   2016.04.24 18:46

完整代码在这里

public class FragmentMainGoldPlan extends FragmentBase{

private VerticalViewPager mViewPager;

private ArrayList<Fragment> mFragmentList;
private ImageButton ib_auto_bid;

private static final float MIN_SCALE = 0.75f;
private static final float MIN_ALPHA = 0.75f;

public static Fragment newInstance() {
    Fragment fg = new FragmentMainGoldPlan();
    fg.setHasOptionsMenu(true);

    return fg;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    initFragment();
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_main_gold_plan_view, container,false);
    mViewPager = (VerticalViewPager) view.findViewById(R.id.vp_gold_plan_pager);
    ib_auto_bid = (ImageButton) view.findViewById(R.id.ib_go_auto_bid);
    ib_auto_bid.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //斗金自动认购
            goAutoBid();
        }
    });
    mViewPager.setAdapter(new GoldPlanAdapter(getChildFragmentManager(),
            mFragmentList));

    return view;
}

protected void goAutoBid() {
    Intent intent = new Intent(getActivity(), ActivityGoldAutoBid.class);
    startActivity(intent);

}

private void initFragment() {
    Fragment fg_first = FragmentGoldPlanFirst.newInstance();
    Fragment fg_seccond = FragmentGoldPlanSeccond.newInstance();
    mFragmentList = new ArrayList<Fragment>();
    mFragmentList.add(fg_first);
    mFragmentList.add(fg_seccond);
}

class GoldPlanAdapter extends FragmentPagerAdapter{

private ArrayList<Fragment> fgList;

public GoldPlanAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

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

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return fgList.size();
}

@Override
public Fragment getItem(int position) {
    // TODO Auto-generated method stub
    return fgList.get(position);
}

}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!