android - 仅在选择其选项卡时才会对片段视图进行膨胀

时间:2016-09-25 10:34:22

标签: android android-fragments android-viewpager fragment android-inflate

我有一个ViewPager,可以创建3个片段。 在 ViewPager pager = (ViewPager) findViewById(R.id.pager); pager.setOffscreenPageLimit(2); pager.setAdapter(new PagerAdapter(getSupportFragmentManager())); 我设置了pager.setOffScreenPageLimit(2),如下所示:

OnViewCreated

PagerAdapter来自此处https://stackoverflow.com/a/11852707/1662033,以确保为每个片段调用一次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

在当前代码中:所有片段的LiveFragmentLiveFragment等都会在开头调用一次,就是这样。

我遇到的问题是 - 在其中一个片段(onCreateView)中,我有一个自定义视图,它连接到相机并显示实时流。

我想要的是 - 只有当用户导航到片段时,才会使$("form").serialize(); 的视图膨胀,而不是现在的情况 - 它在开始时与其他片段一起膨胀。

有没有办法只在选择片段时调用serialize

1 个答案:

答案 0 :(得分:0)

FragmentPagerAdapter创建所有片段,并且始终将所有片段都放在内存中。即所有碎片只创建一次,您可以在它们周围导航。

默认情况下,FragmentStatePagerAdapter在任何给定时间内在内存中创建并且只有3个片段(当前片段和当前片段的左右片段)。你无法减少这个数字。但是,您可以使用viewpager.setOffScreenPageLimit()增加内存中的碎片数量。

由于您只有3个片段,因此在初始化Viewpager时会创建所有3个片段。您可以使用viewpager.addOnPageChangeListener()跟踪屏幕上当前可见的片段。使用此选项,只有当Fragment当前可见时,您才可以将LiveFragment的视图从虚拟视图更改为实际视图。