在托管FragmentActivity的过程中,我需要访问和设置CustomVIEw的属性和字段,以便改变它们的显示方式.
当我需要访问尚未实例化的片段(如活动开头的第三个片段)时,会出现问题(第一个片段是默认选择的,只有下一个片段被实例化).
我的Acticity:
public class VectorProduct extends FragmentActivity { VIEwPager mVIEwPager; TabsAdapter mTabsAdapter; /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.pager); final Actionbar bar = getSupportActionbar(); bar.setSubTitle(R.string.bt_dashboard_vector_product); bar.setNavigationMode(Actionbar.NAVIGATION_MODE_TABS); mVIEwPager = (VIEwPager) findVIEwByID(R.ID.vIEwpager); mTabsAdapter = new TabsAdapter(this,bar,mVIEwPager); mTabsAdapter.addTab(bar.newTab().setText("Vector 1"),VectorFragment.class); mTabsAdapter.addTab(bar.newTab().setText("Vector 2"),VectorFragment.class); mTabsAdapter.addTab(bar.newTab().setText("Vector 3"),VectorFragment.class); } public static class TabsAdapter extends FragmentPagerAdapter implements VIEwPager.OnPagechangelistener,Actionbar.TabListener { private final FragmentManager mFragmentManager; private final Context mContext; private final Actionbar mActionbar; private final VIEwPager mVIEwPager; private ArrayList<Class<? extends Fragment>> Fragments; public TabsAdapter(FragmentActivity activity,Actionbar actionbar,VIEwPager pager) { super(activity.getSupportFragmentManager()); mFragmentManager = activity.getSupportFragmentManager(); mContext = activity; mActionbar = actionbar; mVIEwPager = pager; mVIEwPager.setAdapter(this); mVIEwPager.setonPagechangelistener(this); setFragments(new ArrayList<Class<? extends Fragment>>()); } public voID addTab(Actionbar.Tab tab,Class<? extends Fragment> clss) { mActionbar.addTab(tab.setTabListener(this)); getFragments().add(clss); notifyDataSetChanged(); } @OverrIDe public Fragment getItem(int position) { try { return Fragments.get(position).newInstance(); } catch (InstantiationException e) { } catch (illegalaccessexception e) { } return null; } public Fragment findFragment(int position) { String name = "androID:switcher:" + mVIEwPager.getID() + ":" + position; Fragment fragment = mFragmentManager.findFragmentByTag(name); if (fragment == null) { fragment = getItem(position); } return fragment; } }}解决方法 如果您不介意VIEwPager中每个页面的片段始终被实例化,那么我会在初始化VIEwPager之后在onCreateVIEw中更改屏幕外页面限制:
mVIEwPager.setoffscreenPagelimit(2);
我现在把它放到2,因为你有3个标签.对于4个标签,它将是3,依此类推.
AndroID API的文档:http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)
将屏幕外限制更改为选项卡数减1表示正在加载所有选项卡的所有相邻片段.默认情况下,此值为1,因此仅加载了最近的选项卡.
请注意,此功能最近已添加(我认为支持package v4 release 6),因此请确保您的支持包是最新的.
总结以上是内存溢出为你收集整理的android – 引用ViewPager中的隐形片段全部内容,希望文章能够帮你解决android – 引用ViewPager中的隐形片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)