

FragmentPagerAdapterをFragment内で使っているのですが、以下のFragmentを表示する時、1回目は表示されるのですが、２回目からFragmentPagerAdapterが？正常に呼び出されず、FragmentAもFragmentBも表示されません。  
FragmentPagerAdapter内はFragmentmanagerにて管理されているため、Fragmentmanagerを更新させる必要があるなどと書かれていたので、それが原因かと素人的に思ったりするのですが、何が原因なのでしょうか？  
また、解決方法も具体的にご教示頂けますと幸いでございます。どうぞよろしくお願いいたします。

[code]

    public class Top extends Fragment {
    
        public static Top newInstance() {
            return new Top();
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.top, container, false);
    
            // ViewPagerにMyPagerAdapterを設定
            ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
            pager.setAdapter(new MyPagerAdapter(getFragmentManager()));
    
            // PagerSlidingTabStripにViewPagerを設定
            PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
            tabs.setViewPager(pager);
    
            getActivity().setTitle("テスト");
    
            return view;
        }
    
        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            super.onCreateOptionsMenu(menu, inflater);
            inflater.inflate(R.menu.menu, menu);
        }
    
        private class MyPagerAdapter extends FragmentPagerAdapter {
    
            private final String[] TITLES = {"A", "B"};
    
            public MyPagerAdapter(FragmentManager fm) {
                super(fm);
            }
    
            @Override
            public Fragment getItem(int position) {
                switch (position) {
                    case 0:
                        return new FragmentA();
                    case 1:
                        return new FragmentB();
                }
    
                return null;
            }
    
    
            @Override
            public int getCount() {
                return TITLES.length;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return TITLES[position];
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-03-27T00:56:00.423
8458
2015-07-25T04:39:36.593
8765
question
android android-fragments
FragmentPagerAdapterのFragmentManagerでの管理


Fragment in Fragmentになるので、`getChildFragmentManager()`を渡すのが正しいです。

[code]

    // ViewPagerにMyPagerAdapterを設定
    ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
    pager.setAdapter(new MyPagerAdapter(getChildFragmentManager()));
    
[/code]


CC BY-SA 3.0
2015-03-27T01:12:46.717
8459
2015-03-27T01:12:46.717
845
8458
answer