Fragment StatsDetailFragment がデフォルトで読み込まれるアクティビティがあります。
ボタンを押すと、次のコードを使用してフラグメントを別のフラグメントに置き換えます。
getSupportFragmentManager().beginTransaction()
.replace(R.id.stats_detail_container, projectEntryListFragment, ProjectEntryListFragment.FRAGMENT_ID)
.addToBackStack(FRAGMENT_CHART)
.commit();
カスタム トランジション クラスを使用して、ProjectEntryListFragment の Enter トランジションを設定しています。
public class RevealTransition extends Visibility {
private final Point mEpicenter;
private final int mSmallRadius;
private final int mBigRadius;
private final long mDuration;
public RevealTransition(Point epicenter, int smallRadius, int bigRadius, long duration) {
mEpicenter = epicenter;
mSmallRadius = smallRadius;
mBigRadius = bigRadius;
mDuration = duration;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
Animator animator = ViewAnimationUtils.createCircularReveal(view, mEpicenter.x, mEpicenter.y,
mSmallRadius, mBigRadius);
animator.setDuration(mDuration);
return new WrapperAnimator(animator);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
Animator animator = ViewAnimationUtils.createCircularReveal(view, mEpicenter.x, mEpicenter.y,
mBigRadius, mSmallRadius);
animator.setDuration(mDuration);
return new WrapperAnimator(animator);
}
}
トランジションはうまく機能します。しかし、私が直面している問題は、ProjectEntryListFragment で公開アニメーションが実行されると、StatsDetailFragment が既に削除されており、空白の背景の上で公開アニメーションが再生されることです。ProjectListFragment でリビール トランジションが再生されるときに StatsDetailFragment が表示されるように、StatsDetailFragment で再生することをお勧めします。
新しいフラグメントを追加しようとしましたが、バックスタックのポップ時にエラーが発生します。
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()' on a null object reference
どんな助けでも大歓迎です。