2

私は3つのフラグメントを持つアプリを持っていました。私はpageadapterを使用しているので、配列リストを使用してフラグメントをロードします。問題は、Arraylistを追加するとフラグメントがすべてフラグメントをロードし、その後別の2つのフラグメントをロードすると、nexus 4でうまく動作しますただし、HW が少ない他の一部の電話には時間がかかります。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");
4

1 に答える 1

0

私が理解したことから、メモリがあまりない電話にすべてのフラグメントをロードするときに問題が発生します。解決策は、 を に切り替えることFragmentPageAdapterですFragmentStatePageAdapter。Android のFragmentStatePagerAdapter ドキュメントに従って、StatePageAdapter は、表示されていないときにフラグメントをメモリに保持しないことで、メモリの使用量を減らします。

于 2013-11-22T15:16:11.647 に答える