具體是這樣的,頁面上須要顯示一個底部切換的tab,在每一個tab中須要顯示一個頂部切換的tab,樣子是這樣的:java
這裏在切換下邊的tab時候致使中間的layout內容沒法加載。ide
這裏是 個人消息 fragment:ui
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沒法加載。
this