SlidingTabLayout:用片段替换

时间:2015-05-28 23:27:21

标签: android android-fragments material-design pagerslidingtabstrip

我遇到以下情况:

  • 线性布局
    • 工具栏
    • SlidingTabLayout
    • ViewPager
    • 的FrameLayout

最初,我只在FrameLayout中添加一个片段,一切正常。接下来,我删除此片段,创建新的适配器,并将适配器绑定到SlidingTabLayout。一切都有效,但现在我需要将标签可见性设置为false,我用

执行此操作
slidingTabLayout.setVisibility(View.GONE);

但我还需要用新片段替换当前视图。 通常我这样做:

getFragmentManager().replace(parent, newFragment);

但现在我不能这样做因为     getFragmentManager()。replace(ViewPager,newFragment); 不起作用。那我该怎么做呢?如果可能的话,我可以在Backstack中添加ViewPager替换吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我对我的布局进行了以下更新:

  • 线性布局
    • 工具条
    • 线性布局(id:parentScroll)
      1. SlidingTabLayout
      2. ViewPager
    • 框架布局(id:parent)

因此,当我需要隐藏所有选项卡和ViewPager时,为了在Frame Layout中膨胀新的Fragment,我会执行以下操作:

 parentScroll.setVisibility(View.GONE);
 MyFragment myFragment= new MyFragment ();
 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.parent, myFragment, "MYTAG");
 transaction.commit();

在这个新片段的 onBackPressed 中:

 MyFragment myFragment= (MyFragment) getSupportFragmentManager.findFragmentByTag("MYTAG");
 if (myFragment!= null && myFragment.isVisible()) {
     parentScroll.setVisibility(View.VISIBLE);
     getSupportFragmentManager().beginTransaction().remove(myFragment).commit();
 }