Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.IllegalStateException:替换活动中的任何片段时,在onSaveInstanceState之后无法执行此操作_Java_Android_Android Fragments - Fatal编程技术网

原因:java.lang.IllegalStateException:替换活动中的任何片段时,在onSaveInstanceState之后无法执行此操作

原因:java.lang.IllegalStateException:替换活动中的任何片段时,在onSaveInstanceState之后无法执行此操作,java,android,android-fragments,Java,Android,Android Fragments,我试图替换ListView setOnItemClickListener上的片段,但遇到以下崩溃问题: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65599, result=-1, data=Intent { (has extras) }} to activity {com.demo/com.demo.ui.SipHome}: java.lang.IllegalStateE

我试图替换ListView setOnItemClickListener上的片段,但遇到以下崩溃问题:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65599, result=-1, data=Intent { (has extras) }} to activity {com.demo/com.demo.ui.SipHome}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.deliverResults(ActivityThread.java:4323)
android.app.ActivityThread.handleSendResult(ActivityThread.java:4366)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6540)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1527)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1545)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:654)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:621)
at com.demo.eu.siacs.conversations.ui.StartConversationActivity.openConversationFromConversationList(StartConversationActivity.java:3436)
at com.demo.eu.siacs.conversations.ui.StartConversationActivity.onActivityResult(StartConversationActivity.java:1743)
at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:165)
at paycalldailer.paycall.co.il.ui.SipHome.onActivityResult(SipHome.java:1877)
at android.app.Activity.dispatchActivityResult(Activity.java:7237)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4319)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4366) 
at android.app.ActivityThread.-wrap19(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6540) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
在这里,我点击浮动按钮打开一个活动,下面是代码:

Intent intent = new Intent(getActivity(), PaycallContacts.class);
startActivityForResult(intent, REQUEST_CREATE_CHAT);
然后,onActivityResult我尝试替换片段,如:

if (requestCode == REQUEST_CREATE_CHAT) {

Fragment currentFragment = getChildFragmentManager().findFragmentById(R.id.frameChat);
        if (currentFragment instanceof ConversationFragment && getChildFragmentManager().getBackStackEntryCount() > 1) {
            return;
        }

if(!getActivity().isFinishing()) {
            mConversationFragment = new ConversationFragment();
            FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
            transaction.replace(R.id.frameChat, mConversationFragment, "conversation");
            transaction.addToBackStack(null);
            transaction.commitAllowingStateLoss();
            transaction.commit();
        }

        //switchToConversation(conversation);
        openConversation();

        getChildFragmentManager().addOnBackStackChangedListener(addOnBackStackChangedListener);

}
有人知道我该如何解决撞车问题吗

使用transaction.commitAllowingStateLoss可能有效

谢谢@liubaoyua 您的回答解决了我的问题,但transaction.commitAllowingStateLoss不能单独工作 首先,我重写onSaveInstanceStateBundle outState方法并从中删除超级方法调用,然后提交AllowingStateLoss工作

@Override
public void onSaveInstanceState(Bundle outState) {
    //super.onSaveInstanceState(outState);
}