0

Я использовал this руководство, чтобы сделать простой RecyclerView (во фрагменте) для Activity Shared Element Transition с несколькими элементами, и все это работало отлично, я пытаюсь вернуться , Хотя я передаю ViewHolder, как показано ниже, иногда анимация возврата заканчивается на другом элементе RecyclerView, который действительно плох.Возврат к действию с правильным переходом или без перехода общего элемента

public void onPetClicked(PetRecyclerViewAdapter.PetViewHolder holder, int position) { 

      Intent newPostIntent = new Intent(getActivity(), PostDetailsActivity.class); 
      newPostIntent.putExtra("TYPE", mPostType); 
      newPostIntent.putExtra("POSTED_PET", mPetList.get(position)); 

      Pair<View, String> area = Pair.create(holder.itemView.findViewById(R.id.removable), "content_area"); 
      Pair<View, String> p1 = Pair.create(holder.itemView.findViewById(R.id.ivPetImage), "petImage"); 
      Pair<View, String> p2 = Pair.create(holder.itemView.findViewById(R.id.tvTitle), "postTitle"); 
      Pair<View, String> p3 = Pair.create(holder.itemView.findViewById(R.id.tvInfo), "postDescription"); 
      Pair<View, String> p4 = Pair.create(holder.itemView.findViewById(R.id.rlDate), "postDate"); 
      Pair<View, String> p5 = Pair.create(holder.itemView.findViewById(R.id.rlLocation), "postLocation"); 
      ActivityOptionsCompat options = ActivityOptionsCompat. 
        makeSceneTransitionAnimation(getActivity(), area, p1, p2, p3, p4,p5); 

      getActivity().startActivity(newPostIntent, options.toBundle()); 

Не будучи в состоянии исправить это я решил на самом деле не использовать возвратную анимацию так в моей второй деятельности я заменил

@Override 
    public void onBackPressed(){ 
     super.onBackPressed(); 
     supportFinishAfterTransition(); 
    } 

с

@Override 
    public void onBackPressed(){ 
     super.onBackPressed(); 
     finish(); 
     overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); 
    } 

, но теперь, когда я иду назад все общие элементы пустые!

Итак, я пытаюсь понять способ, чтобы сделать переход возврата правильным, что означает, что эффекты «затухания» исчезнут на правильном элементе, или чтобы удалить переход возврата вместе.

Редактирование: По направлению фактического его создания я попытался получить и использовать View, который был нажат вместо ViewHolder, но опять же, я получил те же результаты. Как только я прокрутил просмотр ресайклера и открыл элемент, взгляды оживились бы до строки, отличной от той, которую они начали.

public void onPetClicked(View view, PetRecyclerViewAdapter.PetViewHolder holder, int position) { 
      mPetList.get(position); 

      Intent newPostIntent = new Intent(getActivity(), PostDetailsActivity.class); 
      newPostIntent.putExtra("TYPE", mPostType); 
      newPostIntent.putExtra("POSTED_PET", mPetList.get(position)); 

      Pair<View, String> area = Pair.create(view.findViewById(R.id.removable), "content_area"); 
      Pair<View, String> p1 = Pair.create(view.findViewById(R.id.ivPetImage), "petImage"); 
      Pair<View, String> p2 = Pair.create(view.findViewById(R.id.tvTitle), "postTitle"); 
      Pair<View, String> p3 = Pair.create(view.findViewById(R.id.tvInfo), "postDescription"); 
      Pair<View, String> p4 = Pair.create(view.findViewById(R.id.rlDate), "postDate"); 
      Pair<View, String> p5 = Pair.create(view.findViewById(R.id.rlLocation), "postLocation"); 
      ActivityOptionsCompat options = ActivityOptionsCompat. 
        makeSceneTransitionAnimation(getActivity(), area, p1, p2, p3, p4,p5); 

      getActivity().startActivity(newPostIntent, options.toBundle()); 
     } 
    }); 

ответ

2

Попробуйте позвонить finish() без super.onBackPressed().

Я предполагаю, что ваша деятельность является AppCompatActivity? Он выполнит ожидающий переход до завершения.

+0

хорошо catch !! благодаря – eiran