如果我想在IndexOutOfBoundsException
中选择标签,则会出现TabLayout
错误:
这是initTablayout函数,它在onCreate
方法中调用:
//======================================== Init Tablayout and view pager
private void initTabLayout() {
mainActivityViewPager = (ViewPager) findViewById(R.id.view_pager_main_activity);
mainActivityTabLayout = (TabLayout)findViewById(R.id.tab_layout_main_activity);
TabLayout.Tab tab = mainActivityTabLayout.getTabAt(1);
tab.select();
FragmentManager manager = getSupportFragmentManager();
MainActivityPagerAdapter adapter = new MainActivityPagerAdapter(manager);
mainActivityViewPager.setAdapter(adapter);
mainActivityTabLayout.setupWithViewPager(mainActivityViewPager);
mainActivityViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mainActivityTabLayout));
mainActivityTabLayout.setTabsFromPagerAdapter(adapter);
}
我收到此错误,我在getTabAt(1)
方法中选择了所选标签的索引,我在PagerAdapter
类上有三个标签:
public class MainActivityPagerAdapter extends FragmentStatePagerAdapter {
//============================================ Constructor
public MainActivityPagerAdapter(FragmentManager fm) {
super(fm);
}
//============================================ GetItem Method ()
@Override
public Fragment getItem(int position) {
Fragment frag = null;
switch (position) {
case 0:
frag = new Fragment_one();
break;
case 1:
frag = new Fragment_two();
break;
case 2:
frag = new Fragment_three();
break;
}
return frag;
}
//============================================= GetCount Method ()
@Override
public int getCount() {
return 3;
}
//============================================= GetPageTitle
@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position) {
case 0:
title = "اول ";
break;
case 1:
title = "دوم ";
break;
case 2:
title = "سوم ";
break;
}
return title;
}
}
完整错误是:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
答案 0 :(得分:1)
您似乎忘记将{添加到mainActivityTabLayout
,因此您的TabLayout
将有0项。因此,当您访问tab1时,您获得了IndexOutOfBoundsException
mainActivityTabLayout.addTab(tabLayout.newTab().setText("1"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("2"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"));
答案 1 :(得分:-1)
选择tab3
请执行以下操作:
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"),true);