3

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

どんな助けでも大歓迎です。

4

1 に答える 1