Переход от общего к фрагментному элементу не работает при выходе - PullRequest
0 голосов
/ 30 мая 2018

Я подозреваю, что это происходит из-за того, что имя перехода не установлено, но я не могу определить, является ли это причиной, или есть другая причина, или что я делаю неправильно, или что отсутствует, вот мой код:

при щелчке элемента в окне повторного просмотра: я не установил имя перехода в представлении привязки, если я это делаю, также не работает

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

                MainActivity.position = position;

                ImagePagerFragment productDetailFragment = new ImagePagerFragment();
                productDetailFragment.setEnterTransition(R.transition.image_shared_element_transition);
                productDetailFragment.postponeEnterTransition();

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

в ImagePagerFragment:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  prepareSharedElementTransition();
  postponeEnterTransition();
}

prepareSharedElementTransition ();:

 Transition transition =
    TransitionInflater.from(getContext())
        .inflateTransition(R.transition.image_shared_element_transition);
setSharedElementEnterTransition(transition);
setEnterTransition(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));
      }
    });

Адаптер на ViewPager просто возвращает фрагмент ImageFragment в ImageFragment при обратном вызове Picasso Success:

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

для выхода из ImageFragment У меня есть кнопка при нажатии кнопки:

 close.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
          new Handler().postDelayed(new Runnable() {
              @Override
              public void run() {
                  getParentFragment().getFragmentManager().popBackStack();
                  ivZoom.getTransitionName();
              }
          }, 500);

      }
  });

и при выходе переход не работает

onBind адаптера просмотра повторного просмотра:

  Picasso.with(context)
            .load(imageArrayList.get(position).getUrl())

// .networkPolicy (NetworkPolicy.OFFLINE)

            .placeholder(R.drawable.loading_tall)
            .fit().centerCrop()

            .into(holder.iv, new com.squareup.picasso.Callback() {
                @Override
                public void onSuccess() {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                       // holder.iv.setTransitionName(MainActivity.position + "ZoomImage");
                    }
                }

                @Override
                public void onError() {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                       // holder.iv.setTransitionName(MainActivity.position + "ZoomImage");
                    }
                }
            });
...