【发布时间】:2016-09-25 10:34:21
【问题描述】:
我有一个PagerAdapter,它创建了 3 个片段。
在MainActivity 我这样设置ViewPager:
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setOffscreenPageLimit(2);
pager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
pager.setOffScreenPageLimit(2) 来自这里https://stackoverflow.com/a/11852707/1662033,以确保每个片段都调用一次OnViewCreated。
这是我的PagerAdapter类:
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Home";
case 1:
return "Live";
case 2:
return "Gallery";
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new HomeFragment();
case 1:
return new LiveFragment();
case 2:
return new GalleryFragment();
default:
return null;
}
}
}
在当前代码中:所有片段的onCreateView、onActivityCreated 等都在开头调用一次,仅此而已。
我遇到的问题是 - 在其中一个片段 (LiveFragment) 中,我有一个自定义视图,它连接到摄像头并显示实时流。
我想要的是 - 仅在用户导航到片段时膨胀 LiveFragment 的视图,而不是现在的方式 - 它在开始时与其他片段一起膨胀。
有没有办法只在选择片段时调用onCreateView?
【问题讨论】:
标签: android android-fragments android-viewpager fragment android-inflate