Reputation: 323
I've been trying something..unique..recently. Due to hierarchical levels of the app requiring multiple nav drawers, which isn't very good UX, I've been trying to add a ViewPager in the nav drawer which pages to show the list for the lower level in the hierarchy Unfortunately, this doesn't seem to be working. Neither does it page, nor does it show an overscroll, indicating more fragments. Its not an Adapter problem, since all ViewPagers in the app are using the same adapter
Adapter
class AdapterClass extends FragmentStatePagerAdapter
{
List<Fragment> mFragments;
public AdapterClass(FragmentManager mFragManager, List<Fragment> mFragment)
{
super(mFragManager);
this.mFragments = mFragment;
}
@Override
public int getCount()
{
return mFragments.size();
}
@Override
public Fragment getItem(int position)
{
return mFragments.get(position);
}
}
Fragments (both fragments are same, save for the list text)
public class NavPagerFragMain extends SherlockFragment
{
View view;
ListView mList;
private ArrayList<String> mItems = new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.nav_pager_frag_main, container, false);
mList = (ListView)view.findViewById(R.id.nav_pager_frag_main);
mItems.add("Read");
mItems.add("Implement");
mItems.add("Design");
mItems.add("Download");
mItems.add("Connect");
mItems.add("Watch");
UserAdapter mAdapter = new UserAdapter(getActivity().getApplicationContext(), mItems);
mList.setAdapter(mAdapter);
return view;
}
Activity where I initialize and setup the ViewPager
mDrawer = (DrawerLayout)findViewById(R.id.app_drawer);
mDrawerItem = (ViewPager)findViewById(R.id.app_drawerpager);
List<Fragment> mInitFrags = new ArrayList<Fragment>();
mInitFrags.add(Fragment.instantiate(getApplicationContext(), NavPagerFragMain.class.getName()));
mInitFrags.add(Fragment.instantiate(getApplicationContext( ), NavPagerFragSub.class.getName()));
mAdapter = new AdapterClass(getSupportFragmentManager(), mInitFrags);
mDrawerItem.setAdapter(mAdapter);
mDrawerItem.setPageTransformer(true, new DepthPageTransformer());
Upvotes: 0
Views: 362
Reputation: 15775
Is your main Activity where you setup the ViewPager also a Fragment? If so, rather than pass the result of getSupportFragmentManager() to your adapter's constructor, pass it the result of the base fragment's getChildFragmentManager() call. In this scenario, you are effectively embedding Fragments within other fragments and the pager needs the child fragment manager to transition and deal with the children. Good luck!
Upvotes: 1