我正在编写一个Android应用程序,其中我正在使用带有标签的ActionBar。当用户按下重新加载按钮时,我会删除所有选项卡并根据新数据创建新选项卡。我有一个问题,在我完成这个之后,仍会显示当前片段的旧内容以及ActionBar中左侧和右侧的片段。但是当我去anoter标签时,我看到了新的内容。我试图在ViewPager上调用removeAllViews,但是当我重新加载时,我得到空的碎片。
我想我已经在互联网上看到了类似问题的解决方案,但它是使用TabHost,我不知道如何获得ActionBar的TabHost。
要替换标签,我使用以下代码:
actionBar.selectTab(actionBar.getTabAt(0));
actionBar.removeAllTabs();
for(int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(MainActivity.this));
actionBar.selectTab(actionBar.getTabAt(0));
actionBar.removeAllTabs();
for(int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(MainActivity.this));
在我完成这个之后,我仍然看到旧片段的旧内容,所以似乎什么也没发生。但是当我点击另一个Tab时,我得到了其他Tabs Fragment的新内容,当我回到第一个Tab时,它也会刷新内容。
My FragmentPagerAdapter:
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return TagTabFragment.newInstance(position);
}
@Override
public int getCount() {
if(tage != null)
return tage.getLength();
return 0;
}
@Override
public CharSequence getPageTitle(int position){
return tage.item(position).getAttributes().getNamedItem("datum").getTextContent();
}