我正在编写的应用程序中,我已经实现了导航抽屉 (默认 Android 的向后兼容方式)。所以从导航抽屉中选择菜单元素然后我会这样做(addPreviousToBackStack 对于测试始终为false):
private void replaceFragment(final Fragment fragment, final boolean addPreviousToBackStack) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.activity_main_fragment_container, fragment);
if(addPreviousToBackStack) {
fragmentTransaction.addToBackStack(fragment.getTag());
}
fragmentTransaction.commit();
currentFragment = fragment;
}
当我启动应用程序时,一切正常。然后我使用返回按钮关闭了应用程序。如果我重新打开应用程序(无论如何:通过长按主页按钮或通过快捷方式),应用程序将在初始屏幕上启动(调用onCreate),然后我打开导航抽屉并选择一个菜单项,此时应用程序会崩溃。
这是我的异常提示:"java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState",它恰好发生在我执行以下代码的那一行:
fragmentTransaction.commit();
我不知道为什么在应用程序重新打开时出现这个问题,而在初始打开应用程序时却没有。有任何提示吗?