AmazeFileManager icon indicating copy to clipboard operation
AmazeFileManager copied to clipboard

Fragment MainFragment{fb222c4} is not currently in the FragmentManager on install

Open EmmanuelMess opened this issue 7 years ago • 4 comments

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)

EmmanuelMess avatar Dec 28 '18 17:12 EmmanuelMess

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.

devmike01 avatar Jan 02 '19 03:01 devmike01

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)


VishalNehra avatar Dec 29 '20 11:12 VishalNehra

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.

VishalNehra avatar Sep 19 '21 08:09 VishalNehra

Any news on this issue?

EmmanuelMess avatar Dec 25 '21 00:12 EmmanuelMess