我一直在尝试一些东西..唯一......最近。由于应用程序的层次级别需要多个导航抽屉,这不是非常好的用户体验,我一直在尝试在导航抽屉中添加一个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());
答案 0 :(得分:1)
您设置ViewPager的主要活动是否也是片段?如果是这样,不是将getSupportFragmentManager()的结果传递给适配器的构造函数,而是传递基本片段的getChildFragmentManager()调用的结果。在这种情况下,您实际上是将片段嵌入到其他片段中,并且寻呼机需要子片段管理器来转换和处理子片段。祝你好运!