注意:请注意,此问题仅发生在千分之一的用户中且无法轻易复制
我在Play商店中有一个应用程序,它适用于大多数用户,但我偶尔会收到与特殊问题相关的崩溃日志。
Can not perform this action after onSaveInstanceState
我认为当我在调用onSavedInstanceState()
之后尝试提交片段时会发生这种情况。但是AFAIK,onSavedInstanceState()
将在onPause()
后调用,我在活动的onCreate()
内进行片段提交
这是代码
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.mipmap.arrow_dark_gray);
setSupportActionBar(toolbar);
initFragments();
ActionBar actionBar=getSupportActionBar();
if(actionBar!=null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
//This function is called from onCreate method.
private void initFragments() {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
MyFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(Constants.DATA, customAdapter);
myFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.shopping_container, myFragment);
fragmentTransaction.commit();
}
很明显我在commit()
内做onCreate()
。是否有可能在onCreate()
onSavedInstanceState()
期间因某些配置更改或操作系统内存不足而被调用。那就是为什么会发生这种崩溃?
将commit()
替换为commitAllowingStateLoss()
是解决此问题的最佳解决方案吗?
答案 0 :(得分:0)
我有同样的问题,commitAllowingStateLoss()
工作正常。
如果您需要更多信息,可以查看以下答案: