android – 引用ViewPager中的隐形片段

android – 引用ViewPager中的隐形片段,第1张

概述我正在使用一个包含3个或更多片段的ViewPager来显示和存储CustomView作为字段. 在托管FragmentActivity的过程中,我需要访问和设置CustomView的属性和字段,以便改变它们的显示方式. 当我需要访问尚未实例化的片段(如活动开头的第三个片段)时,会出现问题(第一个片段是默认选择的,只有下一个片段被实例化). 我的Acticity: public class Vect 我正在使用一个包含3个或更多片段的VIEwPager来显示和存储CustomVIEw作为字段.

在托管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中的隐形片段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1127005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存