Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TabLayout:如何从第二个选项卡开始?_Java_Android_Nullpointerexception_Tabs_Android Tablayout - Fatal编程技术网

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

Java TabLayout:如何从第二个选项卡开始?,java,android,nullpointerexception,tabs,android-tablayout,Java,Android,Nullpointerexception,Tabs,Android Tablayout,我的应用程序中有一个TabLayout,我希望应用程序在打开时从第二个选项卡开始 这是我的TabFragment.java: public class TabFragment extends Fragment { public static TabLayout tabLayout; public static ViewPager viewPager; public static int int_items = 9; @Nullable @Overr

我的应用程序中有一个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;
        }
    }
}
我在互联网上发现了以下代码,它应该可以完成这项工作:

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)

没问题amigo