【发布时间】:2020-03-07 08:32:03
【问题描述】:
我的应用中有一个 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)
我该怎么做才能从第二个标签开始? 我在互联网上找不到任何其他解决方案。 非常感谢
【问题讨论】:
标签: java android nullpointerexception tabs android-tablayout