【发布时间】:2015-08-18 03:52:57
【问题描述】:
我的应用程序包含一个视图,该视图由一个 ViewPager 组成,该 ViewPager 由一些片段组成。当您单击其中一个片段中的项目时,预期行为是共享元素(在本例中为图像)转换到显示有关单击内容的更多信息的片段。
这是一个非常简单的视频,它应该是什么样子:
https://dl.dropboxusercontent.com/u/97787025/device-2015-06-03-114842.mp4
这只是使用 Fragment->Fragment 过渡。
将起始片段放在 ViewPager 中时会出现问题。我怀疑这是因为 ViewPager 使用其父片段的子片段管理器,这与处理片段事务的活动的片段管理器不同。以下是发生的视频:
https://dl.dropboxusercontent.com/u/97787025/device-2015-06-03-120029.mp4
我很确定我上面解释的问题是子片段管理器与活动的片段管理器。以下是我的过渡方式:
SimpleFragment fragment = new SimpleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.am_list_pane, fragment, fragment.getClass().getSimpleName());
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
TransitionSet enterTransition = new TransitionSet();
enterTransition.addTransition(new ChangeBounds());
enterTransition.addTransition(new ChangeClipBounds());
enterTransition.addTransition(new ChangeImageTransform());
enterTransition.addTransition(new ChangeTransform());
TransitionSet returnTransition = new TransitionSet();
returnTransition.addTransition(new ChangeBounds());
returnTransition.addTransition(new ChangeClipBounds());
returnTransition.addTransition(new ChangeImageTransform());
returnTransition.addTransition(new ChangeTransform());
fragment.setSharedElementEnterTransition(enterTransition);
fragment.setSharedElementReturnTransition(returnTransition);
transaction.addSharedElement(iv, iv.getTransitionName());
}
transaction.addToBackStack(fragment.getClass().getName());
transaction.commit();
当两个片段都由活动的片段管理器管理时,这工作正常,但是当我像这样加载 ViewPager 时:
ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
pager.setAdapter(new Adapter(getChildFragmentManager()));
ViewPager 的子项不再由 Activity 管理,它不再工作。
这是 Android 团队的疏忽吗?有什么办法可以解决这个问题吗?谢谢。
【问题讨论】:
-
您能否提供您的活动、父片段和子片段的完整代码?谢谢:)
-
我遇到了嵌套
Fragments 和共享元素转换的问题,here 是我的问题。 -
为什么将 ChildFragmentManager 而不是 FragmentManger 传递给适配器?
-
@EE66 我相信 ChildFragmentManager 被传递是因为 ViewPager 子项不是由 Activity 而是由 ViewPager 管理的,所以它不是同一个片段管理器。
-
您好,这对我不起作用..我正在尝试的是,我在 viewpager 的片段中有一个列表,点击任何我想将图像处理到其详细片段的项目..我尝试了我在这里找到的所有可能的解决方案..但没有任何效果..任何帮助将不胜感激。提前致谢。
标签: android android-viewpager android-transitions