【发布时间】:2016-04-03 09:27:44
【问题描述】:
我正在尝试用onActivityResult() 替换fragment,但它总是给我java.lang.illegalStateException. 的错误
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
12-29 18:50:21.455 5554-5554/com.package E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1377)
12-29 18:50:21.455 5554-5554/com.package E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1395)
12-29 18:50:21.455 5554-5554/com.package E/AndroidRuntime: at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:637)
12-29 18:50:21.455 5554-5554/com.package E/AndroidRuntime: at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:616)
12-29 18:50:21.455 5554-5554/com.package E/AndroidRuntime: at .virtualClass.VirtualPurchaseFragment.dealWithSuccessfulPurchase(VirtualPurchaseFragment.java:161)
这是我的onActivityResult 代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment fragment = new VirtualListFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
}
【问题讨论】:
-
尝试 transaction.commitAllowingStateLoss();
-
我试过了,它不是替换片段,而是在那个地方显示空白片段
-
@pRaNaY 谢谢,我检查了所有这些链接,但
commitAllowingStateLoss只停止异常,不替换片段 -
在使用 v4 Fragment 时需要使用
getSupportFragmentManager()而不是getFragmentManager()。检查here