首先,非常抱歉我的英语不是很好。我是通过翻译写的。如果有什么不清楚的地方,请原谅我。 问题是我有一个 Activity 和两个 Fragments,FragmentA 和 FragmentB
FragmentTransaction transaction = mFragmentManager.beginTransaction();
transaction.setCustomAnimations(R.anim.custom_slide_in_left, R.anim.custom_slide_out_left,
R.anim.custom_slide_in_right, R.anim.custom_slide_out_right);
transaction.add(containerViewId, baseFragment, tag);
transaction.addToBackStack("name");
transaction.commitAllowingStateLoss();
首先这样添加FragmentA,然后通过FragmentA中的点击事件添加FragmentB
@Override
public void onBackPressed() {
mFragmentManager.popBackStack();
}
重写Activity的onBackPressed方法执行popBackStack。此时FragmentB成功执行PopExitAnim,一切正常,但是直接执行PopBackStack时,此时FragmentB也退出了,但是动画没有执行,就这样
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
mFragmentManager.popBackStack();
}
BackStack 的交易是完全一致的。我只观察到FragmentManager的mCurState在调用onBackPressed时是Fragment.RESUMED,而直接调用popBackStack时是Fragment.STARTED,但是无法理解为什么同样重写onBackPressed的方法调用同样的方法,结果却不一样。是什么原因导致popExitAnim不能正常执行,求助,谢谢