相关疑难解决方法(0)

过渡动画期间嵌套片段消失

这里的情景:活动包含片段A,又使用getChildFragmentManager()添加片段A1,并A2在其onCreate像这样:

getChildFragmentManager()
  .beginTransaction()
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好,一切都按预期运行.

然后,我们在Activity中运行以下事务:

getSupportFragmentManager()
  .beginTransaction()
  .setCustomAnimations(anim1, anim2, anim1, anim2)
  .replace(R.id.fragmentHolder, new FragmentB())
  .addToBackStack(null)
  .commit()
Run Code Online (Sandbox Code Playgroud)

在转换期间,enter片段的动画B正确运行,但片段A1和A2完全消失.当我们使用"后退"按钮恢复事务时,它们会正确初始化并在popEnter动画期间正常显示.

在我的简短测试中,它更奇怪 - 如果我为子片段设置动画(见下文),exit当我们添加片段时,动画会间歇性地运行B

getChildFragmentManager()
  .beginTransaction()
  .setCustomAnimations(enter, exit)
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()
Run Code Online (Sandbox Code Playgroud)

我想要实现的效果很简单 - 我希望片段(anim2)上的exit(或应该是popExit?)动画A运行,为整个容器(包括其嵌套的子容器)设置动画.

有没有办法实现这一目标?

编辑:请在这里找到一个测试用例

编辑2:感谢@StevenByle推动我继续尝试使用静态动画.显然你可以在每个操作的基础上设置动画(不是整个事务的全局),这意味着孩子们可以有一个不确定的静态动画集,而他们的父可以有不同的动画,整个事情可以在一个事务中提交.请参阅下面的讨论和更新的测试用例项目.

android android-fragments android-support-library android-nested-fragment

99
推荐指数
5
解决办法
2万
查看次数