Android: Unable to display a fragment inside a viewpager where viewpager was inside a fragment

298 Views Asked by At

Having problem showing Fragment inside a ViewPager.

I have a ViewPager which was hosted inside Fragment where this Fragment was inside the Activity. This ViewPager has a pagerTabStrip. Each page in ViewPager are Fragment of special usage.

This is how I setup the viewpager with PagerAdapter

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_pager_screen,
            container, false);

    ViewPager pager = (ViewPager) rootView.findViewById(R.id.vp_main); 
    pager.setAdapter(new MainTabAdapter(rootView.getContext(),getFragmentManager()));

    return rootView;
}

This is fine, I can see the pager. Within the MainTabAdapter I have a getItem which I select differnt fragments.

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    Log.w("ALBUM", types[arg0].toString());
    Fragment fragment = FragmentType.getFragment(types[arg0]);
    return fragment;
}

This is fine too. I can get the right fragment. When showing the Fragment of different page, none of them showing. Below is my code on one of the Fragment to inflating an xml

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_local_screen,
            container, false);


    Bundle data = new Bundle();
    data.putStringArray("PROJECTION", new String [] { 
        MediaStore.Video.VideoColumns._ID,
        MediaStore.Video.VideoColumns.BUCKET_DISPLAY_NAME, 
        MediaStore.Video.VideoColumns.BUCKET_ID,
        MediaStore.Video.VideoColumns.DATE_TAKEN,
        MediaStore.Video.VideoColumns.DATE_ADDED,
        MediaStore.Video.VideoColumns.DESCRIPTION,
        MediaStore.Video.VideoColumns.DURATION});

    data.putString("SELECTION", null);
    data.putStringArray("SELECTIONARRAY", null);
    data.putString("SORTORDER", MediaStore.Video.VideoColumns.BUCKET_DISPLAY_NAME + " LIMIT " + mLimit);

    VideoCursorAdapter adapter = new VideoCursorAdapter(getActivity(),null,true);
    LocalVideos videos = new LocalVideos(getActivity(), adapter);
    getLoaderManager().initLoader(LocalVideos.LoaderID.THUMBNAIL.getID(), data, videos);

    ListView listView = (ListView)rootView.findViewById(R.id.listVideos);
    //listView.setAdapter(adapter);

    videos.setView(listView);
    return rootView;

This works, if I remove the viewpager. When I put the ViewPager code, this fragment doesn't show up.

0

There are 0 best solutions below