Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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
Android 在片段中的onResume期间执行PopBackbackImmediate时避免IllegalStateException_Android_Android Fragments_Fragment Backstack_Fragmentmanager - Fatal编程技术网

Android 在片段中的onResume期间执行PopBackbackImmediate时避免IllegalStateException

Android 在片段中的onResume期间执行PopBackbackImmediate时避免IllegalStateException,android,android-fragments,fragment-backstack,fragmentmanager,Android,Android Fragments,Fragment Backstack,Fragmentmanager,我有一个带有片段的活动,活动中有两个简单的方法来管理片段:pushFragmentImmediate()和popFragmentImmediate() 这些事务必须立即执行,因为遗留代码依赖于后台堆栈始终处于最新状态 现在我有一个片段,如果满足某些条件,它会在恢复时弹出: @Override public void onResume() { super.onResume(); if (condition) { ((Main) getActivity()).popF

我有一个带有片段的活动,活动中有两个简单的方法来管理片段:
pushFragmentImmediate()
popFragmentImmediate()

这些事务必须立即执行,因为遗留代码依赖于后台堆栈始终处于最新状态

现在我有一个
片段
,如果满足某些条件,它会在恢复时弹出:

@Override
public void onResume() {
    super.onResume();
    if (condition) {
        ((Main) getActivity()).popFragment();
    }
}
这是一个错误。 如果不将
popStackImmediate()
更改为
popsbackstack()
,是否可以避免此错误?或者我可以将
popbackbackimmediate()
移动到其他不会返回错误的阶段吗?还是我想的不对

完整跟踪:

java.lang.RuntimeException: Unable to resume activity {se.esillen.testproject/se.esillen.testproject.Main}: java.lang.IllegalStateException: FragmentManager is already executing transactions
                                                           at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3433)
                                                           at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3473)
                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2736)
                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1481)
                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                           at android.os.Looper.loop(Looper.java:179)
                                                           at android.app.ActivityThread.main(ActivityThread.java:6152)
                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                        Caused by: java.lang.IllegalStateException: FragmentManager is already executing transactions
                                                           at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:2167)
                                                           at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2223)
                                                           at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:834)
                                                           at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:794)
                                                           at se.esillen.testproject.Main.popFragment(Main.java:25)
                                                           at se.esillen.testproject.TestFragment.onResume(TestFragment.java:26)
                                                           at android.support.v4.app.Fragment.performResume(Fragment.java:2401)
                                                           at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1465)
                                                           at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
                                                           at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
                                                           at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3217)
                                                           at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3181)
                                                           at android.support.v4.app.FragmentController.dispatchResume(FragmentController.java:214)
                                                           at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:470)
                                                           at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:459)
                                                           at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:171)
                                                           at android.app.Activity.performResume(Activity.java:6856)
                                                           at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3410)
                                                           at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3473) 
                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2736) 
                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1481) 
                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                           at android.os.Looper.loop(Looper.java:179) 
                                                           at android.app.ActivityThread.main(ActivityThread.java:6152) 
                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

 

@duggu如果这两个问题有某种关联,以及这个问题在该问题中是如何得到回答的,请在回答中给出解释@ʍѳђઽ૯ท 关于同一例外的两个问题,但不相同context@Renascienza那是大约三年前的事了,伙计!:)@ʍѳђઽ૯ท StackOverflow是永远的,伙计!英雄联盟
java.lang.RuntimeException: Unable to resume activity {se.esillen.testproject/se.esillen.testproject.Main}: java.lang.IllegalStateException: FragmentManager is already executing transactions
                                                           at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3433)
                                                           at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3473)
                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2736)
                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1481)
                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                           at android.os.Looper.loop(Looper.java:179)
                                                           at android.app.ActivityThread.main(ActivityThread.java:6152)
                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                        Caused by: java.lang.IllegalStateException: FragmentManager is already executing transactions
                                                           at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:2167)
                                                           at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2223)
                                                           at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:834)
                                                           at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:794)
                                                           at se.esillen.testproject.Main.popFragment(Main.java:25)
                                                           at se.esillen.testproject.TestFragment.onResume(TestFragment.java:26)
                                                           at android.support.v4.app.Fragment.performResume(Fragment.java:2401)
                                                           at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1465)
                                                           at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
                                                           at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
                                                           at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3217)
                                                           at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:3181)
                                                           at android.support.v4.app.FragmentController.dispatchResume(FragmentController.java:214)
                                                           at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:470)
                                                           at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:459)
                                                           at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:171)
                                                           at android.app.Activity.performResume(Activity.java:6856)
                                                           at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3410)
                                                           at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3473) 
                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2736) 
                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1481) 
                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                           at android.os.Looper.loop(Looper.java:179) 
                                                           at android.app.ActivityThread.main(ActivityThread.java:6152) 
                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)