Android的 - 创建标签的动作条使用ViewPager和FragmentStatePagerAdapter多层次性 [英] Android - Creating Multiple Levels of Tabs for ActionBar Using ViewPager and FragmentStatePagerAdapter

查看:175
本文介绍了Android的 - 创建标签的动作条使用ViewPager和FragmentStatePagerAdapter多层次性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么能处理的动作条,使得它$标签的对$ psents多个上下文级别和相关的片段给用户(换句话说,我希望动作条的标签来改变从一个层次到另一个基于Android的标签选择在更高的层次 - 有点像一个分层菜单)。 (理想的情况下,该解决方案将支持级别的任意数,但至少三个层次将是很好的)

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类标签类,presents并使用FragmentStatePagerAdapter,ViewPager管理多达标签与相关片段的三个虚拟层面的例子和动作条都加上标签和片段的集合,具有TabInfo结构粘在一起工作。该解决方案是从张贴在计算器和Android支持文学等解决方案拼凑在一起。关键是要使用FragmentStatePagerAdapter(NOT FragmentPagerAdapter如在Android上火,作为psented在默认的Andr​​oid项目模板$ ​​P $说明)。另外,还要注意它的使用$经由addTab功能被选上插入p $ psents选项卡中的比塞特布尔变量。最后,要知道,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多层次性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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