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

TabLayout: How to start with the second tab?

我的应用程序中有一个 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)

它从第二个选项卡开始我需要做什么? 我在互联网上找不到任何其他解决方案。 非常感谢

如果您使用的是viewpager

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

因为它从索引 0 开始计数,所以在您的情况下 x=1,所以它将是

viewPager.setCurrentItem(x);

您似乎正在尝试访问一个尚未存在的选项卡。在选择选项卡之前尝试调用 tabLayout.setupWithViewPager(viewPager);