0

こちらのコードを使用して、古い Android デバイス用のフリップ カード アニメーションを作成します。今、現在のアクティビティにないフラグメントに切り替えたいと思います。私はこのコードで試しました:

MyFragment f = new MyFragment();

getActivity().getSupportFragmentManager().beginTransaction().add(R.id.item_detail_container, f).commit();
getActivity().getSupportFragmentManager().executePendingTransactions();

f.getView().setVisibility(View.GONE);
View root = getActivity().getWindow().getDecorView().findViewById(android.R.id.content);

FlipAnimation flipAnimation = new FlipAnimation(this.getView(), f.getView());
root.startAnimation(flipAnimation);

しかしtoView.setVisibility(View.VISIBLE);、FlipAnimation クラスで NullPointerException が発生します。現在のアクティビティにないフラグメントに切り替えるにはどうすればよいですか?

編集:答え1とそれからのコメントで質問を解決します。ここのコードは更新されており、現在は正常に動作しています。

4

1 に答える 1

2

commit()on aFragmentTransactionは即時ではありません。非同期です。したがって、commit()返されるまでに、フラグメントはonCreateView()まだ呼び出されていないため、getView()返されますnull

正しい答えは、アニメーションFragmentTransactionを viaに直接適用することだと思いますsetCustomAnimations()

それを超えて、あなたはpost()あなたの仕事をしようとすることができるFlipAnimationので、それは取引が完了した後に起こります.

于 2013-05-19T20:13:16.920 に答える