Skip to content
This repository has been archived by the owner on Sep 3, 2023. It is now read-only.

Crash when requesting permissions in fragment onViewCreated #13

Closed
CarsonRedeye opened this issue May 1, 2019 · 4 comments
Closed

Crash when requesting permissions in fragment onViewCreated #13

CarsonRedeye opened this issue May 1, 2019 · 4 comments
Assignees
Labels
bug Something that needs to be fixed.

Comments

@CarsonRedeye
Copy link

Library Version:

2.2.3

Affected Device(s):

Samsung note 9

Description
When i call this in onViewCreated:

askForPermissions(Permission.CAMERA, requestCode = REQUEST_CODE_PERMISSIONS) { assentResult ->
           // ...
        }

I get this crash:

java.lang.IllegalStateException: FragmentManager is already executing transactions
        at androidx.fragment.app.FragmentManagerImpl.ensureExecReady(FragmentManagerImpl.java:1643)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1703)
        at androidx.fragment.app.FragmentManagerImpl.executePendingTransactions(FragmentManagerImpl.java:229)
        at com.afollestad.assent.internal.ExtensionsKt.transact(Extensions.kt:88)
        at com.afollestad.assent.internal.Data$Companion.ensureFragment(Data.kt:66)
        at com.afollestad.assent.AssentInFragmentKt.askForPermissions(AssentInFragment.kt:60)
        at co.redeye.dms.presentation.search.qrcode.QrCodeReaderFragment.createCameraSource(QrCodeReaderFragment.kt:62)
        at co.redeye.dms.presentation.search.qrcode.QrCodeReaderFragment.onViewCreated(QrCodeReaderFragment.kt:41)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:896)
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java:2078)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1852)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1808)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1709)
        at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManagerImpl.java:147)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:6981)
        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:1445)
@jhionan
Copy link

jhionan commented May 6, 2019

Having this same problem, cant call this lib in fragments

@afollestad afollestad added the bug Something that needs to be fixed. label May 6, 2019
@afollestad afollestad self-assigned this May 6, 2019
@jeancsanchez
Copy link

Same problem here.

@guger
Copy link

guger commented Nov 4, 2019

Facing same problem on Android O, AndroidX Fragment v1.2.0-rc01, when opening the fragment via a App Shortcut (done via a Navigation Component deep link):

java.lang.RuntimeException: Unable to start activity ComponentInfo{at.guger.moneybook.dev/at.guger.moneybook.ui.main.MainActivity}: java.lang.IllegalStateException: FragmentManager is already executing transactions
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.IllegalStateException: FragmentManager is already executing transactions
at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1906)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1971)
at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:493)
at com.afollestad.assent.internal.ExtensionsKt.transact(Extensions.kt:78)
at com.afollestad.assent.internal.Assent$Companion.ensureFragment(Assent.kt:60)
at com.afollestad.assent.AssentInActivityKt$askForPermissions$1.invoke(AssentInActivity.kt:36)
at com.afollestad.assent.AssentInActivityKt$askForPermissions$1.invoke(Unknown Source:2)
at com.afollestad.assent.AssentKt.startPermissionRequest(Assent.kt:76)
at com.afollestad.assent.AssentInActivityKt.askForPermissions(AssentInActivity.kt:35)
at com.afollestad.assent.rationale.AlertDialogRationaleHandlerKt$createDialogRationale$2.invoke(AlertDialogRationaleHandler.kt:76)
at com.afollestad.assent.rationale.AlertDialogRationaleHandlerKt$createDialogRationale$2.invoke(Unknown Source:12)
at com.afollestad.assent.rationale.RationaleHandler.requestPermissions(RationaleHandler.kt:91)
at com.afollestad.assent.AssentKt.startPermissionRequest(Assent.kt:51)
at com.afollestad.assent.AssentInFragmentKt.askForPermissions(AssentInFragment.kt:42)
at com.afollestad.assent.AssentInFragmentKt.runWithPermissions(AssentInFragment.kt:61)
at com.afollestad.assent.AssentInFragmentKt.runWithPermissions$default(AssentInFragment.kt:57)
at at.guger.moneybook.ui.home.addedittransaction.AddEditTransactionDialogFragment.onViewCreated(AddEditTransactionDialogFragment.kt:89)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:298)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1232)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1398)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1476)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1541)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2333)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2120)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2075)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1977)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2862)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2812)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2719)
at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:312)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1233)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1398)
2019-11-04 22:45:16.072 24604-24604/at.guger.moneybook.dev E/AndroidRuntime: at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1476)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1541)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2858)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2812)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1340)
at android.app.Activity.performStart(Activity.java:7200)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2920)

You can try that by compiling and installing https://github.com/guger/MoneyBook.

@guger
Copy link

guger commented Nov 8, 2019

@afollestad As a workaround, delaying the permission request for 200ms works.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something that needs to be fixed.
Projects
None yet
Development

No branches or pull requests

5 participants