1

我的Activity中有一个TabLayout,它在创建时显示一个片段,但是我需要能够在完成一个操作后添加一个新片段(或者在活动已创建,但只显示第一个,然后显示第二个)。在运行时向TabLayout添加片段

我已经尝试将片段添加到viewPagerAdapter,然后调用notifyDataSetChanged()方法,它添加的frament,但它的标题不显示在tabLayout中,如果我尝试滑动到它,我得到一个IndexOutOfBoundsException: Invalid index 1, size is 1

有没有人得到一些建议给我?

我的活动,在这里我想补充的第一fragmen:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.act_one); 

    // Crete a new fragment 
    FragmentOne fragmentOne = new FragmentoOne(); 

    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 

    // Creates the viewPagerAdapter 
    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    // Adds the fragment to ViewPagerAdapter 
    viewPagerAdapter.addFragment(fragmentoOne, "First"); 
    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 

} 

这里是我尝试添加新的片段:

public void onAddFragment2() { 

    viewPagerAdapter.addFragment(new FragmentoTwo(), "Second"); 
    viewPagerAdapter.notifyDataSetChanged(); 

} 
+0

你有没有使用setAdapter设置适配器? –

+0

Dude ...我必须承认我没有,我在想它会再次重新创建第一个片段,丢失了一些'EditText'中填充的数据,现在就试用它,像魅力一样工作......谢谢! :) – Rafael

回答

0

重新设置适配器您setAdapter

0

如果你正在试图建立一个tabLayout更多比一个标签,即这样的事情:

enter image description here

您可以使用FragmentsViewPager创建。但是,在单个问题中从头开始实施它将是多余的!

完美的解决方案是遵循this tutorial,它确实为我工作,如果有任何问题,你应该选择要求评论!

希望它有帮助!

0

这一点很重要,如果你有你喊3片段在适配器中写3加了上去。

@Override 
public int getCount() { 
    return 3; 
}