【问题标题】:Issue in implementing Tabs with viewpager使用 viewpager 实现选项卡的问题
【发布时间】:2016-02-24 05:20:13
【问题描述】:

按照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

请提出建议。

【问题讨论】:

    标签: android android-tabs


    【解决方案1】:

    要在片段中实现视图分页器,请使用 getChildFragmentManager() 而不是 getFragmentManager()。

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

    ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多