Android 片段替换为ActionBar选项卡中的ViewPager
我有带有查看寻呼机功能的ActionBar选项卡。我的问题是在这些选项卡中,我无法替换碎片。我使用下面的代码替换片段,但它没有替换,主要片段保留下来。此外,在其他选项卡中还存在第二个片段。我的TabListener也在下面替换片段Android 片段替换为ActionBar选项卡中的ViewPager,android,android-fragments,android-actionbar,android-viewpager,Android,Android Fragments,Android Actionbar,Android Viewpager,我有带有查看寻呼机功能的ActionBar选项卡。我的问题是在这些选项卡中,我无法替换碎片。我使用下面的代码替换片段,但它没有替换,主要片段保留下来。此外,在其他选项卡中还存在第二个片段。我的TabListener也在下面替换片段 private void addFragment(Fragment fragment, boolean addToBackStack, int transition) { FragmentTransaction fragmentTransaction = ge
private void addFragment(Fragment fragment, boolean addToBackStack, int transition)
{
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.details_container, fragment);
fragmentTransaction.setTransition(transition);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
公共静态类TabsAdapter扩展了FragmentPagerAdapter
实现ViewPager.OnPageChangeListener、ActionBar.TablListener{
私有最终上下文mContext;
私人最终行动律师工商管理硕士;
专用最终查看页面mViewPager;
private final ArrayList mtab=new ArrayList();
静态最终类TabInfo{
私人期末班;
私有最终包args;
TabInfo(类_类,捆绑参数){
clss=_类;
args=_args;
}
}
公共选项卡dapter(片段活动、操作栏、ViewPager寻呼机){
super(activity.getSupportFragmentManager());
mContext=活动;
毫巴=巴;
mViewPager=寻呼机;
mViewPager.setAdapter(此);
mViewPager.setOnPageChangeListener(此);
}
public void addTab(ActionBar.Tab选项卡,Class我建议您通读整个主题并查看中的示例
public static class TabsAdapter extends FragmentPagerAdapter
implements ViewPager.OnPageChangeListener, ActionBar.TabListener {
private final Context mContext;
private final ActionBar mBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
static final class TabInfo {
private final Class<?> clss;
private final Bundle args;
TabInfo(Class<?> _class, Bundle _args) {
clss = _class;
args = _args;
}
}
public TabsAdapter(FragmentActivity activity, ActionBar bar, ViewPager pager) {
super(activity.getSupportFragmentManager());
mContext = activity;
mBar = bar;
mViewPager = pager;
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
public void addTab(ActionBar.Tab tab, Class<? extends Fragment> clss, Bundle args) {
TabInfo info = new TabInfo(clss, args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mBar.addTab(tab);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mTabs.size();
}
@Override
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
return Fragment.instantiate(mContext, info.clss.getName(), info.args);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Object tag = tab.getTag();
for (int i=0; i<mTabs.size(); i++) {
if (mTabs.get(i) == tag) {
mViewPager.setCurrentItem(i);
}
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}