Fragment MainFragment{fb222c4} is not currently in the FragmentManager on install
12-28 14:22:12.244 com.amaze.filemanager.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.amaze.filemanager.debug, PID: 17898
java.lang.IllegalStateException: Fragment MainFragment{fb222c4} is not currently in the FragmentManager
at android.support.v4.app.FragmentManagerImpl.putFragment(FragmentManager.java:923)
at com.amaze.filemanager.fragments.TabFragment.onSaveInstanceState(TabFragment.java:269)
at android.support.v4.app.Fragment.performSaveInstanceState(Fragment.java:2626)
at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:2910)
at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:2971)
at android.support.v4.app.FragmentController.saveAllState(FragmentController.java:134)
at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:591)
at android.support.v7.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:510)
at com.amaze.filemanager.activities.MainActivity.onSaveInstanceState(MainActivity.java:1090)
at android.app.Activity.performSaveInstanceState(Activity.java:1302)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1312)
at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4109)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3511)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3571)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Hi @EmmanuelMess . I investigated the bug and fortunately I was able to find what went wrong. I fixed it by checking if fragmentManager.executePendingTransactions() is true before putting the fragment in the fragment manager... Look for for (Fragment fragment : fragments){...} in your onSaveInstanceState method inside TabFragment. Wrap the statements inside it with if (fragmentManager.executePendingTransactions()){...}. It should now look like this...
if (fragmentManager.executePendingTransactions()) {
fragmentManager.putFragment(outState, "tab" + i, fragment);
i++;
}
Hope it help.
Exception
- User Action: UI Error
- Request: Application crash
- Version: 3.5.2
- OS: Linux Nokia/TA-1053_00WW/ND1:9/PKQ1.181105.001/00WW_6_19B:user/release-keys 9 - 28
- Device: ND1
- Model: TA-1053
- Product: TA-1053_00WW
Crash log
java.lang.IllegalStateException: Fragment MainFragment{bf23580 (fe765438-4b89-4b46-a91b-eb96bf0aad7e)} is not currently in the FragmentManager at androidx.fragment.app.FragmentManagerImpl.putFragment(FragmentManagerImpl.java:350) at com.amaze.filemanager.ui.fragments.TabFragment.onSaveInstanceState(TabFragment.java:226) at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2766) at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2289) at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2348) at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:151) at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:513) at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:533) at com.amaze.filemanager.ui.activities.MainActivity.onSaveInstanceState(MainActivity.java:1150) at android.app.Activity.performSaveInstanceState(Activity.java:1549) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1444) at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:4836) at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:4184) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4148) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4223) at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:41) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:198) at android.app.ActivityThread.main(ActivityThread.java:6729) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Keeping this issue open and moving to 3.7 as the fix was just a band-aid. Ideally we should not be saving the whole fragment to instance state, and use viewmodel for TabFragment. This can easily cause OutOfMemoryException as we experienced in past with MainFragment.
Any news on this issue?