2012-11-17 27 views
6

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

+1

AFAIK、これは動作しません。 'GestureDetector'を使って既存のフラグメントのスワイプを監視することができます。 – CommonsWare

+0

ところで、明確にするために、私はあなたが単一のフラグメント*クラス*を使用したいということを意味するならば、単一のフラグメント*インスタンス*を使いたいということを意味していると仮定しています。 – CommonsWare

答えて

4

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); 
    } 
} 

あなたはスイッチ/ case文には必要なものだけ変えるあなたのコードのほとんどを再利用することができる方法。

+0

しかし、フラグメントクラス –

3

classobject of classのコンセプトが誤解されています。これはあなたのclassinstanceあるobjectを作成します - あなたのMyFragment.javaソースコードは「生き物」あなたはnew演算子(new MyFragment();)とそれをインスタンス化たびにあなたが回しclassを定義します。意図的に(シングルトンパターンを使用して)これを意図的に防止しない限り、classの数をinstancesと同じにすることができます。同じレシピでケーキを作ることができます。これは断片にも当てはまります。

だから、限り、あなたは、各ページのためのあなたのclassの(別名instance言った)object別のを作成すると、あなたがやりたいことができるはずです。

+0

の空でないコンストラクタを作成することはできません。 – Harsha

関連する問題