Android - 使用 ViewPager 和 FragmentStatePagerAdapter 为 ActionBar 创建多级选项卡 [英] Android - Creating Multiple Levels of Tabs for ActionBar Using ViewPager and FragmentStatePagerAdapter

查看:34
本文介绍了Android - 使用 ViewPager 和 FragmentStatePagerAdapter 为 ActionBar 创建多级选项卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何处理 ActionBar 中的 Android 选项卡,以便它向用户呈现多个上下文级别的选项卡和相关片段(换句话说,我希望 ActionBar 选项卡根据在更高级别 - 有点像分层菜单).(理想情况下,该解决方案将支持任意数量的级别",但至少三个级别"会很好)

How can I handle Android tabs in an ActionBar such that it presents multiple contextual levels of tabs and associated fragments to the user (in other words, I want the ActionBar tabs to change from one level to another based on the selections at the higher level - sort of like a hierarchical menu). (Ideally, the solution would support an arbitrary number of "levels", but at least three "levels" would be nice)

注意:要正确排列答案,请按最旧"排序 - 这会将部分放在正确的位置,而 HomeActivity 最后.

NOTE: For proper order to the answers, sort by "oldest" - this puts the parts in the right place with the HomeActivity last.

推荐答案

这是一个名为 ABTabsAdapter 类的选项卡类示例,它使用 FragmentStatePagerAdapter、ViewPager 和 ActionBar 来呈现和管理最多三个虚拟级别的选项卡以及关联的片段与标签和片段的集合一起工作,这些标签和片段与 TabInfo 结构粘合"在一起.该解决方案是从 StackOverflow 上发布的其他解决方案和 Android 支持文献拼凑而成的.关键是使用 FragmentStatePagerAdapter (不是 Android lit 中所述的 FragmentPagerAdapter 和默认 Android 项目模板中所示的).另外,请注意 bIsSet 布尔变量的使用,该变量表示通过 addTab 函数在插入时选择的选项卡.最后,请注意 getItemPosition 函数也可以返回片段/视图/选项卡的实际位置,但这对 FragmentStatePagerAdapter 的性能影响很小,并且当它为所有请求的项目返回 POSITION_NONE 时更易于阅读/使用(这实际上,当前建议在选项卡更改位置时更新 ViewPager 的方法 - 在此实现中,选项卡不仅会更改位置,它们还将根据选项卡菜单的上下文级别"被删除和重新添加.)(第 1 部分)

Here is my example of a tabs class called ABTabsAdapter class that presents and manages up to three virtual levels of tabs with associated fragments using a FragmentStatePagerAdapter, ViewPager and ActionBar all working together with a collection of Tabs and Fragments "glued" together with a TabInfo structure. This solution is pieced together from other solutions posted on StackOverflow and the Android support literature. The key is to use FragmentStatePagerAdapter (NOT FragmentPagerAdapter as stated in the Android lit and as presented in the default Android project template). Also, note the use of the bIsSet boolean variable which presents tabs from being selected on insert via the addTab function. Finally, be aware that the getItemPosition function can also return the fragment/view/tab's actual position, but this has little impact on the performance of a FragmentStatePagerAdapter and it is easier to read/use when it simply returns POSITION_NONE for all items requested (this is, in fact, currently the suggested means for updating the ViewPager when tabs change place - in this implementation not only will the tabs change place, they will also be removed and re-added depending on the contextual "level" of the tabs menu.) (Part 1)

public class ABTabsAdapter extends FragmentStatePagerAdapter implements ActionBar.TabListener, ViewPager.OnPageChangeListener
{
    ActionBar.Tab tabLevelHome = null;
    ActionBar.Tab tabLevel1_2 = null;
    ActionBar.Tab tabLevel1_3 = null;
    ActionBar.Tab tabLevel1_4 = null;
    ActionBar.Tab tabLevel1_2_1 = null;
    ActionBar.Tab tabLevel1_2_2 = null;
    ActionBar.Tab tabLevel1_2_3 = null;
    ActionBar.Tab tabLevel1_3_1 = null;
    ActionBar.Tab tabLevel1_3_1_1 = null;
    ActionBar.Tab tabLevel1_3_2 = null;
    ActionBar.Tab tabLevel1_3_2_1 = null;
    ActionBar.Tab tabLevel1_3_3 = null;
    ActionBar.Tab tabLevel1_3_3_1 = null;
    ActionBar.Tab tabLevel1_4_1 = null;
    ActionBar.Tab tabLevel1_4_2 = null;

    TabInfo infoLevelHome = null;
    TabInfo infoLevel1_2 = null;
    TabInfo infoLevel1_3 = null;
    TabInfo infoLevel1_4 = null;
    TabInfo infoLevel1_2_1 = null;
    TabInfo infoLevel1_2_2 = null;
    TabInfo infoLevel1_2_3 = null;
    TabInfo infoLevel1_3_1 = null;
    TabInfo infoLevel1_3_1_1 = null;
    TabInfo infoLevel1_3_2 = null;
    TabInfo infoLevel1_3_2_1 = null;
    TabInfo infoLevel1_3_3 = null;
    TabInfo infoLevel1_3_3_1 = null;
    TabInfo infoLevel1_4_1 = null;
    TabInfo infoLevel1_4_2 = null;

    private final Context mContext;
    private final ActionBar mActionBar;
    private final ViewPager mViewPager;
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

    Boolean bIsSet = false;

    static final class TabInfo
    {
        private final Class<?> clss;

        TabInfo(Class<?> _class)
        {
            clss = _class;
        }
    }

    public ABTabsAdapter(HomeActivity homeActivity, FragmentManager fragmentManager, ViewPager viewPager, ActionBar actionBar)
    {
        super(fragmentManager);
        mContext = homeActivity;
        mActionBar = actionBar;
        mViewPager = viewPager;
        mViewPager.setAdapter(this);
        mViewPager.setOnPageChangeListener(this);
        initializeTabs();
        bIsSet = true;
        selectLayout(0);
    }

    @Override
    public int getCount()
    {
        return mTabs.size();
    }

    @Override
    public Fragment getItem(int nPos)
    {
        return Fragment.instantiate(mContext, getSelectedTab(nPos).clss.getName(), null);
    }

    @Override
    public int getItemPosition(Object objGet)
    {
        return POSITION_NONE;
    }

    @Override
    public void onPageScrolled(int nPos, float fOffset, int nOffsetPixels)
    {
    }

    @Override
    public void onPageSelected(int nPos)
    {
        mActionBar.setSelectedNavigationItem(nPos);
    }

    @Override
    public void onPageScrollStateChanged(int nState)
    {
    }

    @Override
    public void onTabSelected(ActionBar.Tab tabSelected, FragmentTransaction fragmentTransaction)
    {
        TabInfo infoGet = (TabInfo)tabSelected.getTag();

        selectLayout(tabSelected.getPosition());

        for (int nCount=0; nCount < mTabs.size(); nCount++)
        {
            if (mTabs.get(nCount).clss.getName() == infoGet.clss.getName())
            {
                mViewPager.setCurrentItem(nCount);
            }
        }
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
    {
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
    {
    }

    public void addTab(ActionBar.Tab tabAdd, int nPos)
    {
        try
        {
            if(nPos < 0)
            {
                mTabs.add((TabInfo)tabAdd.getTag());
                mActionBar.addTab(tabAdd);
                notifyDataSetChanged();
            }
            else
            {
                mTabs.add(nPos,(TabInfo)tabAdd.getTag());
                mActionBar.addTab(tabAdd, nPos);
                notifyDataSetChanged();
            }
        }
        catch(Exception e)
        {
            appContext.showMessage("Error","[addTab]: "+e.toString());
        }
    }

    public void removeTab(ActionBar.Tab tabRemove)
    {
        try
        {
            Object tag = tabRemove.getTag();

            for (int nCount=0; nCount < mTabs.size(); nCount++)
            {
                if (mTabs.get(nCount) == tag)
                {
                    mTabs.remove(nCount);
                    mActionBar.removeTab(tabRemove);
                    notifyDataSetChanged();
                    break;
                }
            }
        }
        catch(Exception e)
        {
            appContext.showMessage("Error","[removeTab]: "+e.toString());
        }
    }

    public void initializeTabs()
    {
        try
        {
            tabLevelHome = mActionBar.newTab();
            if(tabLevelHome != null)
            {
                tabLevelHome.setText(" Home");
                tabLevelHome.setIcon(R.drawable.levelhome_44x29);
                tabLevelHome.setTabListener(this);

                infoLevelHome = new TabInfo(HomeActivity.HomeFragment.class);
                tabLevelHome.setTag(infoLevelHome);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Home tab is not set.");

            tabLevel1_2 = mActionBar.newTab();
            if(tabLevel1_2 != null)
            {
                tabLevel1_2.setText(" Level1_2");
                tabLevel1_2.setIcon(R.drawable.level1_2_44x29);
                tabLevel1_2.setTabListener(this);

                infoLevel1_2 = new TabInfo(Level1_2Fragment.class);
                tabLevel1_2.setTag(infoLevel1_2);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_2 tab is not set.");

            tabLevel1_3 = mActionBar.newTab();
            if(tabLevel1_3 != null)
            {
                tabLevel1_3.setText(" Level1_3");
                tabLevel1_3.setIcon(R.drawable.level1_3_44x29);
                tabLevel1_3.setTabListener(this);

                infoLevel1_3 = new TabInfo(Level1_3Fragment.class);
                tabLevel1_3.setTag(infoLevel1_3);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3 tab is not set.");

            tabLevel1_4 = mActionBar.newTab();
            if(tabLevel1_4 != null)
            {
                tabLevel1_4.setText(" Level1_4");
                tabLevel1_4.setIcon(R.drawable.level1_4_44x29);
                tabLevel1_4.setTabListener(this);

                infoLevel1_4 = new TabInfo(Level1_4Fragment.class);
                tabLevel1_4.setTag(infoLevel1_4);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_4 tab is not set.");

            tabLevel1_2_1 = mActionBar.newTab();
            if(tabLevel1_2_1 != null)
            {
                tabLevel1_2_1.setText(" Level1_2_1");
                tabLevel1_2_1.setIcon(R.drawable.level1_2_1_44x29);
                tabLevel1_2_1.setTabListener(this);

                infoLevel1_2_1 = new TabInfo(Level1_2_1Fragment.class);
                tabLevel1_2_1.setTag(infoLevel1_2_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_2_1 tab is not set.");

            tabLevel1_2_2 = mActionBar.newTab();
            if(tabLevel1_2_2 != null)
            {
                tabLevel1_2_2.setText(" Level1_2_2");
                tabLevel1_2_2.setIcon(R.drawable.level1_2_2_44x29);
                tabLevel1_2_2.setTabListener(this);

                infoLevel1_2_2 = new TabInfo(Level1_2_2Fragment.class);
                tabLevel1_2_2.setTag(infoLevel1_2_2);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_2_2 tab is not set.");

            tabLevel1_2_3 = mActionBar.newTab();
            if(tabLevel1_2_3 != null)
            {
                tabLevel1_2_3.setText(" Level1_2_3");
                tabLevel1_2_3.setIcon(R.drawable.level1_2_3_44x29);
                tabLevel1_2_3.setTabListener(this);

                infoLevel1_2_3 = new TabInfo(Level1_2_3Fragment.class);
                tabLevel1_2_3.setTag(infoLevel1_2_3);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_2_3 tab is not set.");

            tabLevel1_3_1 = mActionBar.newTab();
            if(tabLevel1_3_1 != null)
            {
                tabLevel1_3_1.setText(" Level1_3_1");
                tabLevel1_3_1.setIcon(R.drawable.level1_3_1_44x29);
                tabLevel1_3_1.setTabListener(this);

                infoLevel1_3_1 = new TabInfo(Level1_3_1Fragment.class);
                tabLevel1_3_1.setTag(infoLevel1_3_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_1 tab is not set.");

            tabLevel1_3_1_1 = mActionBar.newTab();
            if(tabLevel1_3_1_1 != null)
            {
                tabLevel1_3_1_1.setText(" Level1_3_1_1");
                tabLevel1_3_1_1.setIcon(R.drawable.level1_3_1_1_44x29);
                tabLevel1_3_1_1.setTabListener(this);

                infoLevel1_3_1_1 = new TabInfo(Level1_3_1_1Fragment.class);
                tabLevel1_3_1_1.setTag(infoLevel1_3_1_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_1_1 tab is not set.");

            tabLevel1_3_2 = mActionBar.newTab();
            if(tabLevel1_3_2 != null)
            {
                tabLevel1_3_2.setText(" Level1_3_2");
                tabLevel1_3_2.setIcon(R.drawable.level1_3_2_44x29);
                tabLevel1_3_2.setTabListener(this);

                infoLevel1_3_2 = new TabInfo(Level1_3_2Fragment.class);
                tabLevel1_3_2.setTag(infoLevel1_3_2);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_2 tab is not set.");

            tabLevel1_3_2_1 = mActionBar.newTab();
            if(tabLevel1_3_2_1 != null)
            {
                tabLevel1_3_2_1.setText(" Level1_3_2_1");
                tabLevel1_3_2_1.setIcon(R.drawable.level1_3_2_1_44x29);
                tabLevel1_3_2_1.setTabListener(this);

                infoLevel1_3_2_1 = new TabInfo(Level1_3_2_1Fragment.class);
                tabLevel1_3_2_1.setTag(infoLevel1_3_2_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_2_1 tab is not set.");

            tabLevel1_3_3 = mActionBar.newTab();
            if(tabLevel1_3_3 != null)
            {
                tabLevel1_3_3.setText(" Level1_3_3");
                tabLevel1_3_3.setIcon(R.drawable.level1_3_3_44x29);
                tabLevel1_3_3.setTabListener(this);

                infoLevel1_3_3 = new TabInfo(Level1_3_3Fragment.class);
                tabLevel1_3_3.setTag(infoLevel1_3_3);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_3 tab is not set.");

            tabLevel1_3_3_1 = mActionBar.newTab();
            if(tabLevel1_3_3_1 != null)
            {
                tabLevel1_3_3_1.setText(" Level1_3_3_1");
                tabLevel1_3_3_1.setIcon(R.drawable.level1_3_3_1_44x29);
                tabLevel1_3_3_1.setTabListener(this);

                infoLevel1_3_3_1 = new TabInfo(Level1_3_3_1Fragment.class);
                tabLevel1_3_3_1.setTag(infoLevel1_3_3_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_3_3_1 tab is not set.");

            tabLevel1_4_1 = mActionBar.newTab();
            if(tabLevel1_4_1 != null)
            {
                tabLevel1_4_1.setText(" Level1_4_1");
                tabLevel1_4_1.setIcon(R.drawable.level1_4_1_44x29);
                tabLevel1_4_1.setTabListener(this);

                infoLevel1_4_1 = new TabInfo(Level1_4_1Fragment.class);
                tabLevel1_4_1.setTag(infoLevel1_4_1);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_4_1 tab is not set.");

            tabLevel1_4_2 = mActionBar.newTab();
            if(tabLevel1_4_2 != null)
            {
                tabLevel1_4_2.setText(" Level1_4_2");
                tabLevel1_4_2.setIcon(R.drawable.level1_4_2_44x29);
                tabLevel1_4_2.setTabListener(this);

                infoLevel1_4_2 = new TabInfo(Level1_4_2Fragment.class);
                tabLevel1_4_2.setTag(infoLevel1_4_2);
            }
            else
                appContext.showMessage("Error","[initializeTabs] Level1_4_2 tab is not set.");
        }
        catch(Exception e)
        {
            appContext.showMessage("Error","[initializeTabs]: "+e.toString());
        }
    }

    public void selectLayout(int nPos)
    {
        try
        {
            if(bIsSet)
            {
                bIsSet = false;

                if(appContext.nCurrentLayoutID == 0)
                    showLayoutHome();
                else if(appContext.nCurrentLayoutID == R.layout.fragment_levelhome)
                {
                    if(nPos == 0)
                        appContext.nCurrentLayoutID = R.layout.fragment_levelhome;
                    else if(nPos == 1)
                        showLayoutLevel1_2();
                    else if(nPos == 2)
                        showLayoutLevel1_3();
                    else if(nPos == 3)
                        showLayoutLevel1_4();
                }
                else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_2)
                {
                    if(nPos == 0)
                        showLayoutHome();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_2;
                    else if(nPos == 2)
                        showLayoutLevel1_2_1();
                    else if(nPos == 3)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_4_2;
                }
                else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_3)
                {
                    if (nPos == 0)
                        showLayoutHome();
                    else if (nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3;
                    else if (nPos == 2)
                        showLayoutLevel1_3_1();
                    else if (nPos == 3)
                        showLayoutLevel1_3_2();
                    else if (nPos == 4)
                        showLayoutLevel1_3_3();
                }
                else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_4) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_4_1))
                {
                    if (nPos == 0)
                        showLayoutHome();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_4;
                    else if(nPos == 2)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_4_1;
                    else if(nPos == 3)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_4_2;
                }
                else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_1) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_1_1))
                {
                    if (nPos == 0)
                        showLayoutLevel1_3();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_1;
                    else if(nPos == 2)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_1_1;
                }
                else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_2) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_2_1))
                {
                    if (nPos == 0)
                        showLayoutLevel1_3();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_2;
                    else if(nPos == 2)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_2_1;
                }
                else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_3) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_3_1))
                {
                    if (nPos == 0)
                        showLayoutLevel1_3();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_3;
                    else if(nPos == 2)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_3_3_1;
                }
                else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_2_1) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_2_2) ||(appContext.nCurrentLayoutID == R.layout.fragment_level1_2_3))
                {
                    if (nPos == 0)
                        showLayoutLevel1_2();
                    else if(nPos == 1)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_2_1;
                    else if(nPos == 2)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_2_2;
                    else if(nPos == 3)
                        appContext.nCurrentLayoutID = R.layout.fragment_level1_2_3;
                }
                else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_4_2)
                {
                    if(mActionBar.getTabAt(1).getText() == " Level1_2")
                    {
                        if(nPos == 0)
                            showLayoutHome();
                        else if(nPos == 1)
                            appContext.nCurrentLayoutID = R.layout.fragment_level1_2;
                        else if(nPos == 2)
                            showLayoutLevel1_2_1();
                        else if(nPos == 3)
                            appContext.nCurrentLayoutID = R.layout.fragment_level1_4_2;
                    }
                    else
                    {
                        if (nPos == 0)
                            showLayoutHome();
                        else if(nPos == 1)
                            appContext.nCurrentLayoutID = R.layout.fragment_level1_4;
                        else if(nPos == 2)
                            appContext.nCurrentLayoutID = R.layout.fragment_level1_4_1;
                        else if(nPos == 3)
                            appContext.nCurrentLayoutID = R.layout.fragment_level1_4_2;
                    }
                }
                updateActionBar();

                bIsSet = true;
            }
        }
        catch(Exception e)
        {
            appContext.showMessage("Error","[selectLayout]: "+e.toString());
        }
    }

    public TabInfo getSelectedTab(int nPos)
    {
        TabInfo infoGet = null;

        try
        {
            if(appContext.nCurrentLayoutID == 0)
                infoGet = (TabInfo)tabLevelHome.getTag();
            else if(appContext.nCurrentLayoutID == R.layout.fragment_levelhome)
            {
                if(nPos == 0)
                    infoGet = (TabInfo)tabLevelHome.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_2.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_3.getTag();
                else if(nPos == 3)
                    infoGet = (TabInfo)tabLevel1_4.getTag();
            }
            else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_2)
            {
                if(nPos == 0)
                    infoGet = (TabInfo)tabLevelHome.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_2.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_2_1.getTag();
                else if(nPos == 3)
                    infoGet = (TabInfo)tabLevel1_4_2.getTag();
            }
            else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_3)
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevelHome.getTag();
                else if (nPos == 1)
                    infoGet = (TabInfo)tabLevel1_3.getTag();
                else if (nPos == 2)
                    infoGet = (TabInfo)tabLevel1_3_1.getTag();
                else if (nPos == 3)
                    infoGet = (TabInfo)tabLevel1_3_2.getTag();
                else if (nPos == 4)
                    infoGet = (TabInfo)tabLevel1_3_3.getTag();
            }
            else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_4) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_4_1))
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevelHome.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_4.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_4_1.getTag();
                else if(nPos == 3)
                    infoGet = (TabInfo)tabLevel1_4_2.getTag();
            }
            else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_1) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_1_1))
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevel1_3.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_3_1.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_3_1_1.getTag();
            }
            else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_2) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_2_1))
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevel1_3.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_3_2.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_3_2_1.getTag();
            }
            else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_3_3) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_3_3_1))
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevel1_3.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_3_3.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_3_3_1.getTag();
            }
            else if((appContext.nCurrentLayoutID == R.layout.fragment_level1_2_1) || (appContext.nCurrentLayoutID == R.layout.fragment_level1_2_2) ||(appContext.nCurrentLayoutID == R.layout.fragment_level1_2_3))
            {
                if (nPos == 0)
                    infoGet = (TabInfo)tabLevel1_2.getTag();
                else if(nPos == 1)
                    infoGet = (TabInfo)tabLevel1_2_1.getTag();
                else if(nPos == 2)
                    infoGet = (TabInfo)tabLevel1_2_2.getTag();
                else if(nPos == 3)
                    infoGet = (TabInfo)tabLevel1_2_3.getTag();
            }
            else if(appContext.nCurrentLayoutID == R.layout.fragment_level1_4_2)
            {
                if(mActionBar.getTabAt(1).getText() == " Level1_2")
                {
                    if(nPos == 0)
                        infoGet = (TabInfo)tabLevelHome.getTag();
                    else if(nPos == 1)
                        infoGet = (TabInfo)tabLevel1_2.getTag();
                    else if(nPos == 2)
                        infoGet = (TabInfo)tabLevel1_2_1.getTag();
                    else if(nPos == 3)
                        infoGet = (TabInfo)tabLevel1_4_2.getTag();
                }
                else
                {
                    if (nPos == 0)
                        infoGet = (TabInfo)tabLevelHome.getTag();
                    else if(nPos == 1)
                        infoGet = (TabInfo)tabLevel1_4.getTag();
                    else if(nPos == 2)
                        infoGet = (TabInfo)tabLevel1_4_1.getTag();
                    else if(nPos == 3)
                        infoGet = (TabInfo)tabLevel1_4_2.getTag();
                }
            }
        }
        catch(Exception e)
        {
            appContext.showMessage("Error","[getSelectedTab]: "+e.toString());
        }

        return infoGet;
    }

这篇关于Android - 使用 ViewPager 和 FragmentStatePagerAdapter 为 ActionBar 创建多级选项卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆