导航抽屉中的ViewPager

时间:2013-11-24 07:05:32

标签: android android-viewpager adapter navigation-drawer

我一直在尝试一些东西..唯一......最近。由于应用程序的层次级别需要多个导航抽屉,这不是非常好的用户体验,我一直在尝试在导航抽屉中添加一个ViewPager,这些页面显示层次结构中较低级别的列表 不幸的是,这似乎不起作用。它也没有页面,也没有显示过度滚动,表示更多碎片。它不是适配器问题,因为应用程序中的所有ViewPagers都使用相同的适配器

适配器

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

}

片段(两个片段相同,保存为列表文本)

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

我初始化并设置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());

1 个答案:

答案 0 :(得分:1)

您设置ViewPager的主要活动是否也是片段?如果是这样,不是将getSupportFragmentManager()的结果传递给适配器的构造函数,而是传递基本片段的getChildFragmentManager()调用的结果。在这种情况下,您实际上是将片段嵌入到其他片段中,并且寻呼机需要子片段管理器来转换和处理子片段。祝你好运!