Переход с общего элемента в Recycler на Viewpager: вспышка появляется только при первом нажатии - PullRequest
0 голосов
/ 26 мая 2018

Я делаю обзор рециркулятора для перехода между фрагментом видового экрана и переходом к общему элементу. Моя проблема заключается в том, что флэш-память возникает только при первом запуске viewpager.вот мой код:

on click of recyclerview item:

holder.iv.setTransitionName(MainActivity.position + "ZoomImage");

            ImagePagerFragment productDetailFragment = new ImagePagerFragment();

                getActive.getSupportFragmentManager()
                        .beginTransaction()
                        .setReorderingAllowed(true)
                        .addSharedElement(holder.iv, holder.iv.getTransitionName())
                        .replace(R.id.fragment, productDetailFragment)
                        .addToBackStack(null)
                        .commit();

В ImagePagerFragment, который имеет viewpager:

 prepareSharedElementTransition();
postponeEnterTransition();

prepareSharedElementTransition ():

 Transition transition =
    TransitionInflater.from(getContext())
        .inflateTransition(R.transition.image_shared_element_transition);
setSharedElementEnterTransition(transition);
setEnterSharedElementCallback(
    new SharedElementCallback() {
      @Override
      public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
        Fragment currentFragment = (Fragment) viewPager.getAdapter()
            .instantiateItem(viewPager, viewPager.getCurrentItem());
        View view = currentFragment.getView();
        if (view == null) {
          return;
        }
        sharedElements.put(names.get(0), view.findViewById(R.id.image1));
      }
    });

ImagePagerAdapter - FragmentStatePagerAdapter, возвращающий ImageFragment, в ImageFragment:

 Picasso.with(getActivity())
          .load(url)
          .into(ivZoom, new Callback() {
              @Override
              public void onSuccess() {

                  ivZoom.setTransitionName(MainActivity.position + "ZoomImage");
                  getParentFragment().startPostponedEnterTransition();

              }

              @Override
              public void onError() {
                  ivZoom.setTransitionName(MainActivity.position + "ZoomImage");
                  getParentFragment().startPostponedEnterTransition();
              }
          });
...