我有一个FragmentActivity,里面有两个片段和一个滑动标签布局:
String titles[] = new String[] {"Tab One", "Tab Two"};
int numTabs = titles.length;
EventAdapter adapter = new EventAdapter(getSupportFragmentManager(), titles, numTabs);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
SlidingTabLayout sliding_tabs = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
sliding_tabs.setDistributeEvenly(true);
sliding_tabs.setViewPager(pager);
使用FragmentPagerAdapter:
private class EventAdapter extends FragmentPagerAdapter {
private List<String> titles;
private int numTabs;
public void addTab (String title) {
this.titles.add(title);
this.numTabs++;
this.notifyDataSetChanged();
}
public EventAdapter(FragmentManager fm, List<String> mTitles, int mNumTabs) {
super(fm);
this.titles = mTitles;
this.numTabs = mNumTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 2:
return new FragThree();
case 1:
return new FragTwo();
default:
return new FragOne();
}
}
@Override
public String getPageTitle(int position) {
return titles.get(position);
}
@Override
public int getCount() {
return numTabs;
}
}
有些时候,我想动态地将第三个标签添加到此布局中。有没有办法在代码中执行此操作?如您所见,我已经设置了PagerAdapter以捕获第三个选项卡。我只需要加载它......
答案 0 :(得分:1)
您需要将此方法添加到适配器EventAdapter:
public void addTab (String title) {
this.titles.add(title);
// this is the variable returned from getCount method
this.numbTabs++;
this.notifyDataSetChanged();
}
主要目的是添加选项卡并调用notifydatasetchanged。 现在在此适配器上调用addTab,将添加对象和选项卡。 在addTab之后执行sliding_tab.setViewPager(this.pager); 如果这样可以解决问题,请接受。