6

ビューページャーで 1 つのフラグメントを複数回使用することは可能ですか? ViewPager を使用して動的に更新される UI を構築しようとしています。リストビューアダプターのように、同じデザイン、基本的にページごとに異なるデータを持つ同じフラグメントを使用したいと考えています。

4

2 に答える 2

5

ViewPager のすべてのページに対して同じ Fragment クラスをインスタンス化し、ViewPager の位置を渡して何を表示するかを制御できます。そんな感じ:

public class MyFragment extends Fragment {

    private int mIndex;

    public MyFragment(int index) {
        mIndex = index;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

        switch(mIndex){
            case 0:
            // do you things..
            case 1:
            // etcetera
        }             
    }
}

次に、 FragmentPagerAdapter で:

public static class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public Fragment getItem(int position) {
        return new MyFragment(position);
    }
}

そうすれば、switch/case ステートメントで必要なものだけを変更して、ほとんどのコードを再利用できます。

于 2012-11-17T15:37:06.917 に答える
3

classvsの概念を誤解していobject of classます。ソースMyFragment.javaコードは、演算子 ( )を使用してインスタンス化classするたびに、どれが「生き物」になるかを定義します。これにより、. 意図的にこれを防止しない限り (Singleton パターンを使用するなど) 、好きなだけケーキを作ることができます。同じ方法で、単一のレシピを使用してケーキをいくつでも作ることができます。そして、これはフラグメントにも当てはまります。newnew MyFragment();objectinstanceclassinstancesclass

そのため、ページごとに個別の object(別名instance)を作成する限り、必要なことを実行できるはずです。class

于 2012-11-17T16:28:45.220 に答える