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()上 aFragmentTransaction不是立即的。它是异步的。因此,到commit()返回时,您的片段尚未被调用onCreateView(),因此getView()返回null

我认为正确的答案是让你在FragmentTransactionvia中应用你的动画setCustomAnimations()

除此之外,您还可以尝试在post()您的工作中完成FlipAnimation,因此它会在事务完成后发生。

于 2013-05-19T20:13:16.920 回答