Ошибка «Невозможно выполнить эту задачу после onSavedInstanceState» при добавлении фрагмента в метод onRestart() в AndroAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка «Невозможно выполнить эту задачу после onSavedInstanceState» при добавлении фрагмента в метод onRestart() в Andro

Сообщение Anonymous »

Я работаю над приложением для Android, в котором проверяю, предоставил ли пользователь разрешения камере в методах onCreate() и onRestart(). Если разрешения предоставлены, я начинаю транзакцию фрагмента, чтобы добавить фрагмент камеры, используя следующий код:

Код: Выделить всё

getSupportFragmentManager().beginTransaction()
.add(R.id.cameraFragment, CameraFragment.class, null)
.commit();
Если разрешение не предоставлено, я показываю причину и перенаправляю пользователя к настройкам приложения. возвращаясь из настроек приложения, в onRestart() я также проверяю, предоставил ли пользователь разрешения камере, если нет, я снова показываю сообщение с обоснованием и перенаправляю пользователя к настройкам приложения. Если разрешение было предоставлено и, вернувшись из настроек приложения, я пытаюсь начать транзакцию фрагмента, чтобы добавить фрагмент камеры. но вот здесь я получаю эту ошибку. Невозможно выполнить эту задачу после onSavedInstanceState, и вот исключение

Код: Выделить всё

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1632)
at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1672)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306)
at com.example.democamapp.Main.CameraActivity.beginArFragmentTransaction
(CameraActivity.java:144)
at com.example.democamapp.Main.CameraActivity.checkAndRequestRuntimePermission
(CameraActivity.java:78)
at com.example.democamapp.Main.CameraActivity.onRestart(CameraActivity.java:54)
at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1445)
at android.app.Activity.performRestart(Activity.java:8315)
at android.app.ActivityThread.performRestartActivity(ActivityThread.java:5501)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence
(TransactionExecutor.java:243)
at android.app.servertransaction.TransactionExecutor.cycleToPath
(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState
(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute
(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2336)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8653)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Как лучше всего обрабатывать транзакции фрагментов после проверки разрешений в onRestart(), чтобы не столкнуться с этой ошибкой?

Подробнее здесь: https://stackoverflow.com/questions/790 ... g-fragment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»