Java 在表格布局中选择选项卡时发生IndexOutOfBoundsException
当我想在Java 在表格布局中选择选项卡时发生IndexOutOfBoundsException,java,android,Java,Android,当我想在表格布局中选择选项卡时,我得到索引自动边界异常错误: 这是initTablayout函数,它在onCreate方法中调用: //======================================== Init Tablayout and view pager private void initTabLayout() { mainActivityViewPager = (ViewPager) findViewB
表格布局中选择选项卡时,我得到索引自动边界异常错误:
这是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
您似乎忘记将选项卡添加到您的main活动表布局
,因此您的表布局
将包含0项。因此,当您访问tab1时,您得到了IndexOutOfBoundsException
mainActivityTabLayout.addTab(tabLayout.newTab().setText("1"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("2"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"));
您似乎忘记将选项卡添加到您的main活动表布局
,因此您的表布局
将包含0项。因此,当您访问tab1时,您得到了IndexOutOfBoundsException
mainActivityTabLayout.addTab(tabLayout.newTab().setText("1"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("2"));
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"));
选择tab3
请执行以下操作:
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"),true);
选择tab3
请执行以下操作:
mainActivityTabLayout.addTab(tabLayout.newTab().setText("3"),true);
尝试获取mainActivityTableLayout.setTabsFromPagerAdapter(适配器)下面的选项卡代码>iIt:java.lang.IndexOutOfBoundsException:索引0无效,大小为0为什么要使用不推荐的API…您还没有添加要查看的选项卡pager@Rohan哪一个是不推荐使用的API?让我好奇。尝试获取下面的选项卡mainActivityTableLayout.setTabsFromPagerAdapter(适配器)代码>iIt:java.lang.IndexOutOfBoundsException:索引0无效,大小为0为什么要使用不推荐的API…您还没有添加要查看的选项卡pager@Rohan哪一个是不推荐使用的API?我很好奇。我的主要目的是选择表格布局中的最后一个选项卡,但我不知道如何解决,您的解决方案解决了索引错误,但最后一个选项卡未选择。无论如何,谢谢你的解答。我的主要目的是在我的表格中选择最后一个选项卡,但我不知道如何解决,你的解答解决了索引错误,但是,最后一个选项卡没有选择。不管怎样,谢谢你的安慰