我面临一个奇怪的问题。
当我使用以下代码使用setCustomAnimation()
启动片段时:
/**
* launch a fragment
*
* @param containerID - frameLayout ID
* @param fragment - fragment we want to launch
* @param isAddToBackStack - add to back stack???
*/
public void launchFragment(int containerID, Fragment fragment, boolean isAddToBackStack) {
FragmentManager mFragmentManager = getSupportFragmentManager();
FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.setCustomAnimations(R.anim.anim_transition_enter_fade_in
, R.anim.anim_transition_exit_fade_out
, R.anim.anim_transaction_fade_in_pop
, R.anim.anim_transaction_fadeout_pop)
.replace(containerID, fragment);
if (isAddToBackStack) {
mFragmentTransaction.addToBackStack(null);
}
mFragmentTransaction.commitAllowingStateLoss();
}
当我在动画完成之前快速按下后退按钮时,应用会冻结。 我已经录制了应用程序屏幕。请查看以下视频:
https://drive.google.com/file/d/0BxFmkFbsB3NhNkRLbm8yQ195TUU/view?usp=drivesdk
任何帮助将不胜感激。 感谢
答案 0 :(得分:0)
我认为您的应用在动画结束前会遇到状态丢失。
替换你的:
mFragmentTransaction.commitAllowingStateLoss();
使用:
mFragmentTransaction.commit();
如果通过更改上面的代码导致IllegalStateException: Can not perform this action after onSaveInstanceState
错误,
然后您可能需要查看此Blog有关正在发生的事情。
希望这有帮助。