2017-10-24 21 views
0

ビューページャーに3つのフラグメントを持つアクティビティがあります。私は内部にフラグメントを持つビューページャーを持つ別のトップフラグメントを開始しました。すべてがうまくいき、私はこれをすべて成功させました。しかし、フラグメントからフラグメントへの共有遷移のためにaddSharedElementを使用すると、アニメーションはまったく起こりません。共有トランジションのフラグメントが機能しない

View transitionView = view.findViewById(R.id.photo_image_view); 
     fragmentManager 
       .beginTransaction() 
       .replace(R.id.fragment_container, fragment) 
       .addToBackStack(null) 
       .addSharedElement(transitionView, ViewCompat.getTransitionName(transitionView)) 
       .commit(); 

と私がやったのonCreate私の次のフラグメントに:

public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getActivity() != null) { 
     getActivity().supportPostponeEnterTransition(); 
    } 
    } 

その後、onCreateViewに、私はフラグメントと別のviewpagerを実装して、私は以下のような新しいトップ断片と断片を置換します。ビューのページャを実装した後、私は私がやった表示したいフラグメント:

activity.supportStartPostponedEnterTransition(); 

をしかしまったくアニメーションはありません:onViewCreatedで

 desiredFragmentToShow.setSharedElementEnterTransition(TransitionInflater.from(

    getActivity()).inflateTransition(R.transition.change_image_trans)); 

    desiredFragmentToShow.setEnterTransition(TransitionInflater.from(

    getActivity()).inflateTransition(android.R.transition.fade)); 

とdesiredFragmentToShowでは、私がやりました。身体にアイデアがある場合は助けてください。

+0

したがって、フラグメント間で共有要素を使用している場合、なぜアクティビティに関与していますか?例えば、あなたは 'getActivity()を呼び出しています。supportPostponeEnterTransition();は' postponeEnterTransition(); 'などでなければなりません。 –

+0

@Mark Keen私は 'postponeEnterTransition();'次のコンテナフラグメントオブビューページャの 'onCreate()'と 'startPostponedEnterTransition();'フラグメント内のビューページャでは、ビューページャフラグメントの静止画ビューはアニメーション化されません。 –

+0

@ WakilAhmad問題の解決に成功しましたか? –

答えて

0

は申し訳ありませんが、私の答えはkotlinであるが、私はそれが私がonViewCreatedstartPostponedEnterTransition()の呼び出しは手遅れであることがわかってきました

大したないと信じています。

ViewPager断片

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    val transition = TransitionInflater 
     .from(context) 
     .inflateTransition(R.transition.change_image_trans) 
    sharedElementEnterTransition = transition 
    /* The return transition probably should be set here as well on the way back 
     but I havent't try that yet so I nullify it... */ 
    sharedElementReturnTransition = null 
    postponeEnterTransition() 
    // ... your code 
} 

ページフラグメント

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    startPostponedEnterTransition() 
} 

とその作品...

トランジションにリスナーを入れたい場合は残念ながら、それはあなたがそれを定義する場合にのみ機能しますViewPagerPage Fragmentにキャストされた共有遷移にリスナーを設定すると、トリガーされないためです。

val transition = parentFragment!!.sharedElementEnterTransition 
+0

私はすでに作成を延期するよう呼びかけています。 –

+0

私は参照してください。もしあなたが 'ViewPager Fragment'の代わりに' Page Fragment'にそれを置いているのなら、それは理由かもしれません。とにかく私が共有したステップに従えば、あなたはトランジション、幸運を得るだろうと確信しています –

関連する問題