FragmentTransactions をバック スタックからポップしてカスタム アニメーションを処理する方法を使用または理解するのに問題があります。具体的には、「アウト」アニメーションを呼び出すことを期待していますが、そうではないようです。
フラグメント トランザクション (FragmentTransaction) を処理する簡単な方法があります。ここでは、フラグメントを追加し、カスタム トランジションを適用して、フェードイン/フェードアウトします。また、これをバックスタックに追加して、ユーザーが戻るボタンでそのトランザクションを元に戻し、基本的にフラグメントが追加される前の状態に移動できるようにします。
protected void changeFragment() {
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
ft.add(R.id.fragment_container, new TestFragment());
ft.addToBackStack(null);
ft.commit();
}
すべてがうまく機能しますが、ユーザーが戻るボタンをクリックしても、遷移アニメーションは元に戻りません。私が予想していたのは、フラグメントが削除されると、フェードアウト アニメーションが使用されるということでした。代わりに、(アニメーションなしで) ポップアウトするように見え、その後、コンテナーがフェードインするように見えます。これが正確に起こっていることかどうかはわかりませんが、フラグメントは確実にフェードアウトしていません。
私のアプリケーションは互換性ライブラリを使用してフラグメントのサポートを追加していますが、これは Honeycomm (android-11) にも適用できると想定しています。ここで私が何か間違ったことをしているだけなのか、それとも期待しすぎているだけなのか、誰か知っていますか? 理想的には、Gmail (Xoom の場合) がメッセージをクリックして先に進み、[戻る] ボタンを使用して戻るのと同じように、フラグメントをアニメーション化したいと考えています。戻るボタンの機能を無効にして、自分のフラグメント状態に追いつく必要がないことが望ましいです。なぜなら、取り消したいいくつかの「トランザクション」がある可能性があり、私は車輪を再発明するのが好きではないからです。
Android Developers Group でも質問されています: http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9