带有嵌套片段(ViewPager)的导航抽屉

3
我正在编写一款应用程序,其中包含一个导航抽屉并使用嵌套片段。导航抽屉的创建与Android文档几乎相同 - 它可以正常工作。我希望导航抽屉始终可见,这就是为什么我只有一个带有它的活动,并且我只是交换片段。其中一个片段是ViewPager,它又有自己的页面片段作为页面。导航的层次结构如下:
- Home
- Fragment 1
-- Subfragment 1.1
-- Subfragment 1.2
-- Subfragment 1.3
- Fragment 2
-- Subfragment 2.1
-- Subfragment 2.2
-- Subfragment 2.3

这里的Fragment是一个ViewPager,而Subfragments则是它的页面。当我从抽屉导航中直接进入Fragment时,一切都正常工作,但我不知道如何直接切换到ViewPager中给定的页面(嵌套片段)。

MainActivity处理导航抽屉点击事件:

@Override
protected void onNavItemSelected(int id) {
    switch ((int)id) {
        case 1:
            getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, new MainFragment())
            .addToBackStack(null).commit(); 
            break;
        case 100:
            getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, new Fragment1())
            .addToBackStack(null).commit();
            break;
        case 200:
            getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, new Fragment2())
            .addToBackStack(null).commit();
            break;
        .
        .
        .
    }    
}

我想这应该与getChildFragmentManager()ViewPagersetCurrentItem()有关,但是我在我的主Activity中无法获取第一个(或不知道如何获取),如果我像这样做,我不能使用第二个,因为pager还没有被创建:

SubFragment11 a = new SubFragment11();
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, a).addToBackStack(null).commit();
a.setCurrentPagerItem(2);
1个回答

0

为ViewPager片段提供一个Bundle,其中包含一个变量来控制所选项目。当创建Viewpager时,获取该整数并切换到该面板。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接