2

私はv4互換性ライブラリを使用しており、次のような新しいフラグメントに切り替えています。

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
 transaction.replace(R.id.contentFragmentContainer, event.getFragmentClass().newInstance(), FRAGMENT_CONTENT);
 transaction.addToBackStack(fragmentTransactionName);
 transaction.commit();

ここで、ユーザーのバックスタックを新しいフラグメントトランザクションで汚染することなく、プログラムで前のフラグメントに戻りたい場合は、次を使用しますpopBackStackImmediate()

 if (fragmentManager.popBackStackImmediate(fragmentTransactionName, 0)) {
     return;
 }
 // apparently popping back to that fragment was not successful,
 // make a regular transaction now

ポップされたフラグメントの1つにアニメーション化するために使用されたアニメーションは元に戻されませんが、これはそのままですべて正常に機能します。私もtransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)事前に使ってみましたが、通常の取引時のトランジションすら表示されず、逆方向にも表示されませんでした。

私は何が間違っているのですか?

4

1 に答える 1

10

The Fine Manual (TM) をよく読む必要があると思います。

public abstract FragmentTransaction setCustomAnimations
                (int enter, int exit, int popEnter, int popExit)

「このトランザクションに出入りするフラグメントに対して実行する特定のアニメーション リソースを設定します。popEnter および popExit アニメーションは、特にバック スタックをポップするときに、出入り操作のために再生されます。」

ソース

于 2012-09-25T13:22:34.297 に答える