使用viewpager实现标签的问题

时间:2016-02-24 05:20:13

标签: android android-tabs

遵循here

的教程

我已经在活动中实现了相同它工作得很好但是当我尝试在片段中添加制表符时,滑动制表符不会显示片段的视图。

public class DetailFragment extends android.support.v4.app.Fragment implements LoaderManager.LoaderCallbacks<Cursor>,View.OnClickListener  {

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_detail_start, container, false);


    viewPager = (ViewPager) rootView.findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

}

private void setupViewPager(ViewPager viewPager) {

    ViewPagerAdapter adapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager());
    adapter.addFragment(new OneFragment(), "ONE");
    adapter.addFragment(new TwoFragment(), "TWO");
    adapter.addFragment(new ThreeFragment(), "THREE");
    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
  }
}  // Update - code formatting

请建议。

1 个答案:

答案 0 :(得分:0)

要在片段中实现View寻呼机,请使用getChildFragmentManager()而不是getFragmentManager()。

因此,在为ViewPager初始化ViewPagerAdapter时,请使用“getChildFragmentManager()”。

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());