SlidingTabLayout:替换为片段
SlidingTabLayout: replace with fragment
我有以下情况:
- 线性布局
- 工具栏
- SlidingTabLayout
- ViewPager
- 框架布局
最初,我只向 FrameLayout 添加一个片段,一切正常。接下来我删除这个片段,创建新的适配器,并将适配器绑定到 SlidingTabLayout。一切正常,但现在我需要将选项卡可见性设置为 false,我使用
执行此操作
slidingTabLayout.setVisibility(View.GONE);
但我还需要用新片段替换当前视图。
通常我这样做:
getFragmentManager().replace(parent, newFragment);
但现在我不能这样做,因为
getFragmentManager().replace(ViewPager, newFragment);
不起作用。那我该怎么做呢?如果可能的话,我可以在后台添加 ViewPager 替换吗?
我找到了解决办法。我对布局进行了以下更新:
- 线性布局
- 工具栏
- 线性布局(id:parentScroll)
- SlidingTabLayout
- ViewPager
- 框架布局(id:parent)
因此,当我需要隐藏所有选项卡和 ViewPager 时,为了在框架布局中膨胀新的片段,我执行以下操作:
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();
}
我有以下情况:
- 线性布局
- 工具栏
- SlidingTabLayout
- ViewPager
- 框架布局
最初,我只向 FrameLayout 添加一个片段,一切正常。接下来我删除这个片段,创建新的适配器,并将适配器绑定到 SlidingTabLayout。一切正常,但现在我需要将选项卡可见性设置为 false,我使用
执行此操作slidingTabLayout.setVisibility(View.GONE);
但我还需要用新片段替换当前视图。 通常我这样做:
getFragmentManager().replace(parent, newFragment);
但现在我不能这样做,因为 getFragmentManager().replace(ViewPager, newFragment); 不起作用。那我该怎么做呢?如果可能的话,我可以在后台添加 ViewPager 替换吗?
我找到了解决办法。我对布局进行了以下更新:
- 线性布局
- 工具栏
- 线性布局(id:parentScroll)
- SlidingTabLayout
- ViewPager
- 框架布局(id:parent)
因此,当我需要隐藏所有选项卡和 ViewPager 时,为了在框架布局中膨胀新的片段,我执行以下操作:
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();
}