根据需要在FragmentpagerAdapter中加载片段

时间:2013-05-15 23:14:47

标签: android android-fragments android-viewpager

我有一个带有3个片段的应用程序,即时通讯使用pageadapter所以我使用arraylist加载片段,问题是它,当我添加Arraylist片段加载所有片段,之后我加载另外2个片段,在我的nexus 4运行良好但其他一些硬件较少的手机需要一段时间。当你从页面移动到页面时,在Android市场似乎“加载”,我怎么能这样做?仅当人们使用下一个适配器改变到该页面时“创建”视图

public class PagerAdapter extends FragmentPagerAdapter  {

        private final ArrayList<Fragment> mFragments = new ArrayList<Fragment>();
        private final ArrayList<String> titulos = new ArrayList<String>();

        public PagerAdapter(FragmentManager manager) {
            super(manager);
        }


        public void addFragment(Fragment fragment,String title) {
            mFragments.add(fragment);
            titulos.add(title);
            notifyDataSetChanged();
        }

        @Override
        public int getCount() {
            return mFragments.size();
        }

        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
        }

这就是我在FragmentActivity中加载片段的方式

 mPagerAdapter = new PagerAdapter(getSupportFragmentManager());
        mPagerAdapter.addFragment(new Fragment1(),"Phone");
        mPagerAdapter.addFragment(new Fragment2(),"info");
        mPagerAdapter.addFragment(Fragment3.newInstance() , "none");

1 个答案:

答案 0 :(得分:0)

根据我的理解,在没有太多内存的手机中加载所有碎片时会遇到问题。解决方案是将FragmentPageAdapter切换为FragmentStatePageAdapter。根据Android的FragmentStatePagerAdapter documentation,StatePageAdapter通过在未查看时不将片段保留在内存中来占用更少的内存。