TabLayout:如何从第二个选项卡开始?

我的应用程序中有一个TabLayout,我希望该应用程序在打开时从第二个选项卡启动。

这是我的TabFragment.java:

public class TabFragment extends Fragment {
    public static TabLayout tabLayout;
    public static ViewPager viewPager;


    public static int int_items = 9;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {



        View v =  inflater.inflate(R.layout.tab_layout,null);
        tabLayout = (TabLayout) v.findViewById(R.id.tabs);
        tabLayout.getTabAt(1).select();
        viewPager = (ViewPager) v.findViewById(R.id.viewpager);
        viewPager.setadapter(new MyAdapter(getchildFragmentManager()));


        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                    tabLayout.setupWithViewPager(viewPager);
                   }
        });
        return v;
    }


    class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }


        // Tab positions
        @Override
        public Fragment getItem(int position) {
            if(position == 0){
                return new TabFavorite();
            }
            if(position == 1){
                return new Tab1();
            }
            if(position == 2){
                return new Tab2();
            }
            if(position == 3){
                return new Tab3();
            }
            if(position == 4){
                return new Tab8();
            }
            if(position == 5){
                return new Tab4();
            }
            if(position == 6){
                return new Tab5();
            }
            if(position == 7){
                return new Tab6();
            }
            if(position == 8){
                return new Tab7();
            }
        return null;
        }


        // Tab titles
        @Override
        public CharSequence getPageTitle(int position) {
            switch (position){
                case 0 :
                    return getText(R.string.tabfavorite);
                case 1 :
                    return getText(R.string.tab1);
                case 2 :
                    return getText(R.string.tab2);
                case 3 :
                    return getText(R.string.tab3);
                case 4 :
                    return getText(R.string.tab8);
                case 5 :
                    return getText(R.string.tab4);
                case 6 :
                    return getText(R.string.tab5);
                case 7 :
                    return getText(R.string.tab6);
                case 8 :
                    return getText(R.string.tab7);

            }
                return null;
        }

        @Override
        public int getcount() {
            return int_items;
        }
    }
}

我在Internet上找到了以下代码,它应该可以完成工作:

tabLayout.getTabAt(1).select();

但这给了我以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout$Tab.select()' on a null object reference
        at com.my.app.TabFragment.onCreateView(TabFragment.java:46)

从第二个标签开始,我该怎么办? 我在互联网上找不到其他解决方案。 非常感谢

rabbitcf 回答:TabLayout:如何从第二个选项卡开始?

您似乎在尝试访问某个标签之前就已经存在。选择选项卡之前,请尝试致电tabLayout.setupWithViewPager(viewPager);

,

如果您使用的是viewpager

viewPager.setCurrentItem(x); 其中,x =要默认打开的选项卡编号。

由于它从索引0开始计数,因此在您的情况下x = 1,因此它将为

viewPager.setCurrentItem(x);

本文链接:https://www.f2er.com/3122831.html

大家都在问