0

RECYCLERVIEWなしで2つのフラグメント間で共有要素の移行を実装できます。FirstFragment(RecyclerViewを含む)とSecondFragmentの間で共有要素の遷移を使用する方法

これはFirstFragmentです:

public class FirstFragment extends Fragment { 

ImageView img_small; 
LinearLayout layout_ofc_cities; 
LinearLayout layout; 

public FirstFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_first, container, false); 

    img_small = (ImageView) view.findViewById(R.id.img_small); 
    layout_ofc_cities = (LinearLayout) view.findViewById(R.id.layout_ofc_cities); 
    layout = (LinearLayout) view.findViewById(R.id.layout); 

    layout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 

       setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_trans)); 
       setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade)); 

       SecondFragment secondFragment = new SecondFragment(); 
       secondFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_trans)); 
       secondFragment.setEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade)); 

       FragmentTransaction ft = getFragmentManager().beginTransaction() 
         .replace(R.id.container, secondFragment) 
         .addToBackStack(null) 
         .addSharedElement(layout_ofc_cities, "transitionTxt") 
         .addSharedElement(img_small, "transitionImg"); 
       ft.commit(); 
      } 

     } 
    }); 

    return view; 
    } 
} 

、これはSecondFragmentです:

public class SecondFragment extends Fragment { 

public SecondFragment() { 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_second, container, false); 

    return view; 
    } 

} 

そして、それは働きます! しかし、ときに私はそれが動作しませんSecondFragmentでLinearLayoutImageViewLinearLayoutRecyclerViewImageViewためSharedElementTransitionを使用するFirstFragmentでRecyclerViewを実装しています。

最初のコードにRecyclerViewがあり、その共有要素間にアニメーションがある2つのフラグメントがあるサンプルコードが必要です。誰でも助けてくれますか?

答えて

関連する問題