我在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问题,但没有什么对我有用(或者我没有清楚地理解)。
请帮助。