私のアプリには、少数のフラグメントで構成される 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 の子はアクティビティによって管理されていないため、動作しなくなりました。
これは Android チームによる見落としですか? これをやってのける方法はありますか?ありがとう。