转载请标明来源:http://blog.youkuaiyun.com/rflyee/article/details/74719551
异常如下:
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
在使用fragment、dialogFragment等控件时可能会遇到以上异常。原因正如抛出的异常所说一样:不能在onSaveInstanceState之后执行该操作。即不能执行commit()操作,包括dialogFragment的show()、dismiss(),fragment中fragmentTransaction的commit()等等。
接下来,找一下崩溃源码,追一下崩溃相关的源码流程。
对应的崩溃源码流程:
比如调用DialogFragment#show()
public void show(FragmentManager manager, String tag) {
mDismissed = false;
mShownByMe = true;
FragmentTransaction ft = manager.beginTransaction();
ft.add(this, tag);
ft.commit(); // 这里这里
}
commit的实现方法:
@Override
public int commit() {
return commitInternal(false);
}
int commitInternal(boolean allowStateLoss) {
if (mCommitted) throw new IllegalStateException("commit already called");
if (FragmentManagerImpl.DEBUG) {
Log.v(TAG, "Commit: " +