【问题标题】:Tablayout tab with multiple fragment具有多个片段的 Tablayout 选项卡
【发布时间】:2016-09-14 04:09:21
【问题描述】:

我正在开发一个使用带有 5 个选项卡的选项卡布局的应用程序。我需要在每个选项卡内导航多个片段,并在用户再次重新选择选项卡时打开第一个片段。请帮帮我。

 TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.scene_tab_selector));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.my_scene_tab_selector));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.conversation_tab_selector));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.notification_tab_selector));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.more_tab_selector));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdaptor adapter = new PagerAdaptor
                (getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
                if(tab.getPosition()==4)
                {
//                    pageTitleLabel.setText("My Profile");
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                tab.getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {


            }
        });

我的PagerAdaptor如下

public class PagerAdaptor extends FragmentStatePagerAdapter {
    int mNumOfTabs;


    public PagerAdaptor(FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.mNumOfTabs = NumOfTabs;

    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                Tab1ContainerFragment tab1 = new Tab1ContainerFragment();
                return tab1;
            case 1:
                MyCuddllFragment tab2 = new MyCuddllFragment();
                return tab2;
            case 2:
//                CuddllConversationFragment tab3 = new CuddllConversationFragment();
                ConversationFragment conversationFragment = new ConversationFragment();
                return conversationFragment;

            case 3:
//                CuddllNotificationsFragment tab4 = new CuddllNotificationsFragment();
                Tab4ContainerFragment notificationPageFragment = new Tab4ContainerFragment();
                return notificationPageFragment;

            case 4:
                MyProfileFragment tab5 = new MyProfileFragment();
                return tab5;

            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return mNumOfTabs;
    }



}

【问题讨论】:

  • 请问您到目前为止都尝试过什么?您还可以提及您在实施上述问题时遇到的问题
  • 我试过查看寻呼机和寻呼机适配器。并在每个选项卡中加载第一个片段。但现在问题是在每个选项卡中遍历片段
  • 分享代码,我们可以帮你修复。
  • 请看我编辑的帖子
  • 如果我没记错,那么您需要 Tab1ContainerFragment 中的另一个查看器和适配器。但是这次您需要将 Fragments 作为 Tab1ContainerFragment 的子项进行管理,因此您需要 ChildFragmentManager。我建议如果你还没有实现它,那么请先用2个子片段来实现它。

标签: android android-fragments android-tablayout


【解决方案1】:
 public void onTabSelected(TabLayout.Tab tab) {

            tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
            if(tab.getPosition()==0)
            {
               viewpager.setCurrentItem(0);
            }else if(tab.getPosition()==1)
            {
              viewpager.setCurrentItem(1);
            }else if(tab.getPosition()==2)
            {
              viewpager.setCurrentItem(2);
            }else if(tab.getPosition()==3)
            {
              viewpager.setCurrentItem(3);
            }


        }

【讨论】:

  • 它不能帮助我到达标签的第一页。
  • 我们可以在facebook上联系吗
  • @VinayakMishra 我进行了编辑。现在试试。抱歉,我写的时候太累了。
  • 基本上你只需要确保你的片段附有一个数字。这样您就知道单击选项卡时要显示哪个片段。
  • 你什么时候有空。我需要对此进行一些讨论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多