繁体   English   中英

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

[英]Navigation Drawer with nested fragments (ViewPager)

我正在编写一个具有Navigation Drawer并使用嵌套片段的应用程序。 根据Android文档创建导航抽屉 - 它的工作原理。 我希望导航抽屉始终可见,这就是为什么我有一个活动,我只是交换片段。 其中一个片段是ViewPager ,而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's给定页面(嵌套片段)

处理导航抽屉点击的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()ViewPager's setCurrentItem() ,但是我无法获得我的主要活动中的第一个(或者不知道如何),我不能使用第二个,因为没有创建寻呼机但如果我做这样的事情:

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

为ViewPager片段提供带有变量的Bundle以控制所选项目。 创建Viewpager后,获取该整数并切换到该面板。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM