Wak*_*mad 10 animation android android-fragments
我实现了如下片段:
代码示例如下所示:
/*This code does not show animation*/
getChildFragmentManager()
.beginTransaction()
.addSharedElement(transitionView, ViewCompat.getTransitionName(transitionView))
.replace(R.id.fragment_container, categoryDetailChildFragment)
.addToBackStack(TAG)
.commit();
Run Code Online (Sandbox Code Playgroud)
并且显示动画的代码是:
getFragmentManager()
.beginTransaction()
.addSharedElement(transitionView, ViewCompat.getTransitionName(transitionView))
.replace(R.id.fragment_container, categoryDetailChildFragment)
.addToBackStack(TAG)
.commit();
Run Code Online (Sandbox Code Playgroud)
为什么getChildFragmentManager()时没有共享转换?请帮助任何人.
每个片段都有自己的childFragmentManager。因此,如果您有多个嵌套片段,您应该引用同一片段的 childFragmentManager,与您使用 addSharedElement() 的情况相同。
因此,如果您有:
ActivityA
|_ FragmentB
|_ FragmentC
|_ FragmentD
Run Code Online (Sandbox Code Playgroud)
对于片段 C 和片段 D,您应该使用最上面的公共片段的 getChildFragmentManager() - 在这种情况下片段 B - 以确保每个嵌套片段都引用相同的fragmentManager。这就是为什么当您使用 Activity 的 FragmentManager 时它会起作用,因为只有一个 Activity,并且每个 Activity 通过使用 getActivity() 引用同一个 Activity
要在嵌套片段中获取父片段,您可以在嵌套片段的 onAttach() 方法上使用 getParentFragment() 。您还可以将其强制转换为某个类,例如 FragmentB:
override fun onAttach(context: Context) {
super.onAttach(context)
val fragment: FragmentB = parentFragment.parentFragment.parentFragment... as FragmentB
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |