android viewpager切换无法显示fragment问题

具体是这样的,页面上需要显示一个底部切换的tab,在每个tab中需要显示一个顶部切换的tab,样子是这样的:

165112_llmt_2284472.png

这里在切换下边的tab时候导致中间的layout内容无法加载。

这里是 我的消息 fragment:

public class MessageFragment extends Fragment {
    private FragmentActivity mContext;
    private final String[] mTitles = {"交流", "公告","test1","test2","test3", "通知"};
    private ViewPager vp;
    private SlidingTabLayout tabLayout;
    private View view;
    private int index = 0;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        mContext = this.getActivity();
        super.onCreate(savedInstanceState);
    }

    @TargetApi(Build.VERSION_CODES.M)
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_main_message, null);
        vp = ViewFindUtils.find(view, R.id.frg_mymessage_list);
        //问题是这里需要调用getChildFragmentManager,而不是getFragmentManager
        vp.setAdapter(new MyPagerAdapter(getChildFragmentManager()));

        vp.setCurrentItem(index);
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                index = position;
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
        tabLayout = ViewFindUtils.find(view, R.id.frg_mymessage_tabs);
        tabLayout.setViewPager(vp);
        return view;
    }
    private class MyPagerAdapter extends FragmentPagerAdapter {
        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            System.out.println("count:"+mTitles.length);
            return mTitles.length;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            System.out.println("title position:"+position);
            return mTitles[position];
        }

        @Override
        public Fragment getItem(int position) {
            System.out.println("item position:"+position);
            Fragment f = SimpleCardFragment.getInstance(mTitles[position]);
            return f;
        }
    }
}

基础不好啊,fragment中嵌套fragment需要使用getChildFragmentManager,activity中嵌套fragment调用getFragmentManager。这里表现出来的问题是,在activity加载进入之后页面是完整的中间显示的layout能够显示,当切换底部的tab返回 我的消息 时导致中间的layout无法加载。

转载于:https://my.oschina.net/buobao/blog/610496

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值