アクティビティのViewPager内に3つのフラグメントがあり、フラグメントの1つから別のアクティビティへの共有要素の遷移を実現したいと考えています。遷移は、アクティビティアクティビティ->ビューページ->フラグメント->リサイクラービュー内にあるビューページャー内にあるフラグメント内にあるリサイクラービューからのものです。
私はインターネットのあらゆる場所を検索しましたが、あるフラグメントから別のフラグメントへの共有要素の移行と、あるアクティビティから別のアクティビティに関する情報しかありません。フラグメントからアクティビティへの移行に関するコンテンツはありません
holder.poster.setTransitionName("posterX");
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) con,holder.poster,holder.poster.getTransitionName());
Log.e("Animation", "Success");
//startActivity((Activity) con,intent,options.toBundle());
c.startActivity(intent,options.toBundle());
上記のコードを使用すると、2番目のアクティビティが起動しますが、何も表示されません。たとえば、2番目のアクティビティにはFABが含まれており、クリックするとyoutubeが起動します。 FABがどこにあるか知っているので、盲目的にクリックすると、YouTubeは正しく起動しましたが、2番目のアクティビティでは何も表示されません
D/ViewRootImpl: changeCanvasOpacity: opaque=true
そのlogcatsの1つ。これが問題だと思います!!
同じ問題が発生しました。申し訳ありませんが、Fragment toFragmentまたはActivityto Activityの関係で作業できるのに、Fragment toActivityの関係が必要な理由を再検討する必要があります。
コードをFragmentto Fragmentリレーションに変更することで問題を解決しましたが、それに関するドキュメントと例がたくさんあります Shared Element Transitions
私はついに答えを見つけました、startActivity呼び出しメソッドは異なります。あなたは電話する必要があります
startActivityFromFragment(fragment, intent, req_code, options.toBundle());
appCompactActivityから
フラグメントはアクティビティ内にあるため、フラグメントからアクティビティはアクティビティからアクティビティと同じです。
私は以下のようにペアを使用すると思います:
Pair[] pairs = new Pair[1];
pairs[0] = new Pair<View, String>(tvArtifacts, "itemTrans");
ActivityOptions options = null;
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Lollipop) {
options = ActivityOptions.makeSceneTransitionAnimation(getActivity(), pairs);
}
Intent i = new Intent(getActivity(), ItemDetailActivity.class);
i.putExtra("item_name", "item 2");
if (options != null) {
startActivity(i, options.toBundle());
} else {
startActivity(i);
}
これは私のために働いた!ありがとう..