【发布时间】:2016-02-13 13:58:21
【问题描述】:
我的活动中有一个TabLayout,它在创建时显示一个片段,但我需要能够在完成操作后向其中添加一个新片段(或在创建活动时创建两者,但只显示第一个,然后显示第二个)。
我尝试将片段添加到 viewPagerAdapter,然后调用 notifyDataSetChanged() 方法,它添加的框架,但它的标题没有显示在 tabLayout 中,如果我尝试滑动到它,我会得到一个IndexOutOfBoundsException: Invalid index 1, size is 1
有人给我一些建议吗?
我的活动,我在其中添加了第一个片段:
@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"); // this line can cause crashes
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}
这里是我尝试添加新片段的地方:
public void onAddFragment2() {
viewPagerAdapter.addFragment(new FragmentoTwo(), "Second"); // new FragmentoTwo() should be in FragmentPagerAdapter.getItem()
viewPagerAdapter.notifyDataSetChanged();
}
【问题讨论】:
-
您是否尝试使用 setAdapter 再次设置适配器?
-
老兄...我必须承认我没有,我在想它会重新创建拳头片段,丢失一些
EditText中填充的数据,现在就尝试了工作就像一个魅力......谢谢! :)
标签: android android-fragments android-viewpager android-tablayout