ViewPager中的选项卡会调用所有生命周期方法两次

时间:2017-03-27 18:22:22

标签: android android-fragments android-viewpager android-adapter

我在viewpager内使用FragmentPagerAdapter有三个标签。

这是我的顶级片段,其中包含viewpager

public class TabHolderFragment extends Fragment {

View view;
ViewPager viewPager;
TabLayout tabLayout;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.tab_holder_fragment, container, false);
    viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    viewPager.setOffscreenPageLimit(2);
    viewPager.setAdapter(new SectionsPagerAdapter(getChildFragmentManager()));
    tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
    tabLayout.post(new Runnable() {
        @Override
        public void run() {
            tabLayout.setupWithViewPager(viewPager);
        }
    });

    return view;
}
}

这是我的适配器类

public class SectionsPagerAdapter extends FragmentPagerAdapter  {

public SectionsPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    //Fragment fragment;
    switch (position){
        case 0:
            return new TabTimeline();
        case 1:
            return new TabMyPosts();
        case 2:
            return new TabNotifications();
        default:
            return new TabTimeline();
    }

}


@Override
public int getCount() {
    // Show 3 total pages.
    return 3;
}

@Override
public CharSequence getPageTitle(int position) {
    switch (position) {
        case 0:
            return "Timeline";
        case 1:
            return "My Posts";
        case 2:
            return "Notifications";
    }
    return null;
}
}

我的问题是所有生命周期函数在方向更改时运行两次,而onPause和onResume在应用程序运行后运行两次。 我经历了很多stackoverflow问题,但没有什么对我有用(或者我没有清楚地理解)。

请帮助。

0 个答案:

没有答案