2

私は 20 の FragmentActivity を持っています。それらはすべて、異なるメカニズムを持つゲーム画面のように表されます。それらをすべてViewPagerに入れたいです。頭に浮かぶのは、次のダミー コードだけです。

 public static class MyAdapter extends FragmentPagerAdapter {


    @Override
    public Fragment getItem(int position) {
        switch(position){
          case 0:
            return new Fragment1();
          case 1:
            return new Fragment2();
          .........................
          another 20 case statements here
          .........................
          case 20:
            return new Fragment21();
        }
    }

 }

しかし、それを行う別の方法があるはずです。どんな助けにも感謝します。

4

3 に答える 3

6

FragmentPagerAdapter必要になるたびにフラグメントをインスタンス化しないほどスマートです。だからあなたのコードはOKです。とはいえ、メモリに保持される 20 個のフラグメントは少し多すぎるかもしれません。を見てください。FragmentStatePagerAdapterフラグメントを常にメモリに保持することなく、フラグメントを自動的に保存および復元します。

a を使用する代わりにswitch、フラグメントのリストを取得して、リストから返すことができます。

List<Fragment> fragments;

public Fragment getItem(int pos) {
  return fragments.get(pos);
}

public void addFragment(Fragment f) {
  fragments.add(f);
}
于 2011-08-30T11:57:17.120 に答える
1

FragmentStatePagerAdapterの代わりに使用しFragmentPagerAdapterます。

FragmentStatePagerAdapterArrayListフラグメントの保存に使用していますFragmentPagerAdapterが、使用していgetFragmentByTagます。

于 2012-07-21T17:27:52.443 に答える
0

正直なところ、それほど悪いことではないと思います。メニュー、ゲーム、一時停止、ゲームオーバーなどの画面がある多くのゲームで、そのようなことが見られます。

私が言いたいのは、別のページに変更するたびに「新しい」フラグメントを実際に作成する必要があるかどうかということです。

于 2011-08-30T11:56:01.203 に答える